diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt index e1c1ba24de..c12e1b330a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt @@ -1,6 +1,5 @@ package com.mogo.och.taxi.passenger.ui -import android.graphics.drawable.AnimationDrawable import android.os.Bundle import android.view.View import com.mogo.commons.mvp.MvpFragment @@ -249,7 +248,7 @@ class TaxiPassengerBaseFragment() : */ fun showOrHideStartAutopilotView(isShow: Boolean) { if (isShow) { - exitFullVideoScreen() + exitFullVideoScreen(false) if (mStartAutopilotView == null || mStartAutopilotView!!.get() == null) { mStartAutopilotView = WeakReference(StartAutopilotView(requireContext())) } @@ -274,7 +273,7 @@ class TaxiPassengerBaseFragment() : */ fun showOrHideArrivedEndLayout(isShow: Boolean) { if (isShow) { - exitFullVideoScreen() + exitFullVideoScreen(true) if (mArrivedEndView == null || mArrivedEndView!!.get() == null) { mArrivedEndView = WeakReference(ArrivedView(context)) } @@ -292,8 +291,8 @@ class TaxiPassengerBaseFragment() : } } - private fun exitFullVideoScreen(){ - infoVideoView.exitFullScreenMode() + private fun exitFullVideoScreen(resetVideoPlayer: Boolean) { + infoVideoView.exitFullScreenMode(resetVideoPlayer) } fun showOrHideOverMapView(){ @@ -317,7 +316,7 @@ class TaxiPassengerBaseFragment() : ) { try { if (isShow) { - exitFullVideoScreen() + exitFullVideoScreen(false) if (mArrivedCheckView == null || mArrivedCheckView!!.get() == null) { initCheckView() } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt new file mode 100644 index 0000000000..b1426decaf --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt @@ -0,0 +1,123 @@ +package com.mogo.och.taxi.passenger.ui.arrived + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.drawable.Drawable +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.bumptech.glide.Priority +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.request.RequestOptions +import com.bumptech.glide.request.target.CustomTarget +import com.bumptech.glide.request.transition.Transition +import com.mogo.eagle.core.function.api.autopilot.IMoGoBackCameraVideoListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StitchedVideoListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIsSubscribeBackCameraVideoVideo +import com.mogo.eagle.core.function.call.autopilot.CallerBackCameraVideoListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StitchedVideoListenerManager +import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider +import com.mogo.och.taxi.passenger.R +import kotlinx.android.synthetic.main.taxi_p_right_rear_cam.view.actv_cam_position_group +import kotlinx.android.synthetic.main.taxi_p_right_rear_cam.view.v_video_right_rear + + +/** + * + * 评价View + * Created on 2022/5/16 + */ +class RightRearCamView : ConstraintLayout , IMoGoBackCameraVideoListener, + IMoGoRoboBusJinlvM1StitchedVideoListener { + + constructor(context: Context) : super(context) + + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + + private val requestOptions = RequestOptions() + .priority(Priority.HIGH) + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .dontAnimate() + + private val target: CustomTarget = object : CustomTarget() { + + override fun onResourceReady(resource: Bitmap, transition: Transition?) { + if (!resource.isRecycled&&v_video_right_rear!=null) { + v_video_right_rear.setImageBitmap(resource) + } + } + + override fun onLoadCleared(placeholder: Drawable?) { + //这个方法在target被回收时调用,如果在除了imageView以外的地方引用了imageView中的bitmap,在这里清除引用以避免崩溃 + } + } + + private fun initView() { + d(SceneConstant.M_TAXI_P + TAG, "initView") + LayoutInflater.from(context).inflate(R.layout.taxi_p_right_rear_cam, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + setIsSubscribeBackCameraVideoVideo(1, true) + CallerBackCameraVideoListenerManager.addListener(TAG, this) + CallerRoboBusJinlvM1StitchedVideoListenerManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + setIsSubscribeBackCameraVideoVideo(1, false) + CallerBackCameraVideoListenerManager.removeListener(this) + CallerRoboBusJinlvM1StitchedVideoListenerManager.removeListener(this) + } + + companion object { + const val TAG = "RightRearCamView" + } + + init { + try { + initView() + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun draw(data: ByteArray) { + ThreadUtils.runOnUiThread { + if(actv_cam_position_group.visibility == GONE) { + actv_cam_position_group.visibility = VISIBLE + } + GlideApp.with(v_video_right_rear) + .asBitmap() + .load(data) + .placeholder(R.drawable.taxi_p_right_rear_cam) + .apply(requestOptions) + .into(target) + } + } + + + override fun onBackCameraVideo(data: ByteArray) { + draw(data) + } + + override fun onRoboBusJinlvM1StitchedVideo(data: ByteArray) { + draw(data) + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + outlineProvider = TextureVideoViewOutlineProvider(36f) + clipToOutline = true + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearGlideView.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearGlideView.java deleted file mode 100644 index d596eaa8c9..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearGlideView.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.mogo.och.taxi.passenger.ui.arrived; - - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.widget.AppCompatImageView; - -import com.bumptech.glide.Priority; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.request.target.CustomTarget; -import com.bumptech.glide.request.transition.Transition; -import com.mogo.eagle.core.function.api.autopilot.IMoGoBackCameraVideoListener; -import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StitchedVideoListener; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; -import com.mogo.eagle.core.function.call.autopilot.CallerBackCameraVideoListenerManager; -import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StitchedVideoListenerManager; -import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp; -import com.mogo.eagle.core.utilcode.util.ThreadUtils; -import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider; - -/** - * 图片帧展示View - */ -public class RightRearGlideView extends AppCompatImageView implements IMoGoBackCameraVideoListener, IMoGoRoboBusJinlvM1StitchedVideoListener { - private static final String TAG = RightRearGlideView.class.getSimpleName(); - private final RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .skipMemoryCache(true) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .dontAnimate(); - - public RightRearGlideView(@NonNull Context context) { - super(context); - } - - public RightRearGlideView(@NonNull Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - public RightRearGlideView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - CallerAutoPilotControlManager.INSTANCE.setIsSubscribeBackCameraVideoVideo(1, true); - CallerBackCameraVideoListenerManager.INSTANCE.addListener(TAG, this); - CallerRoboBusJinlvM1StitchedVideoListenerManager.INSTANCE.addListener(TAG, this); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - CallerAutoPilotControlManager.INSTANCE.setIsSubscribeBackCameraVideoVideo(1, false); - CallerBackCameraVideoListenerManager.INSTANCE.removeListener(this); - CallerRoboBusJinlvM1StitchedVideoListenerManager.INSTANCE.removeListener(this); - } - - private final CustomTarget target = new CustomTarget() { - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { - //回调内容 - if (!resource.isRecycled()) { - RightRearGlideView.this.setImageBitmap(resource); - } - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - //这个方法在target被回收时调用,如果在除了imageView以外的地方引用了imageView中的bitmap,在这里清除引用以避免崩溃 - } - }; - - private void draw(@NonNull byte[] data) { - ThreadUtils.runOnUiThread(() -> GlideApp.with(RightRearGlideView.this) - .asBitmap() - .load(data) - .placeholder(RightRearGlideView.this.getDrawable()) - .apply(requestOptions) - .into(target)); - } - - @Override - public void onBackCameraVideo(@NonNull byte[] data) { - draw(data); - } - - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, h, oldw, oldh); - setOutlineProvider(new TextureVideoViewOutlineProvider(36F)); - setClipToOutline(true); - } - - @Override - public void onRoboBusJinlvM1StitchedVideo(@NonNull byte[] data) { - draw(data); - } - -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt index 62e011e446..a94fe96e70 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt @@ -77,11 +77,15 @@ internal class InfoVideoView @JvmOverloads constructor( } } - fun exitFullScreenMode() { + fun exitFullScreenMode(resetVideoPlayer: Boolean) { val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) player?.let { it.exitFullScreenMode() + it.onVideoPause() + if(resetVideoPlayer) { + it.onVideoReset() + } } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt index 05b17cb50b..853386009a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt @@ -145,10 +145,12 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { override fun onWindowFocusChanged(hasWindowFocus: Boolean) { super.onWindowFocusChanged(hasWindowFocus) - if(hasWindowFocus){//获取焦点 - onVideoResume() - }else{ - onVideoPause() + if(isIfCurrentIsFullscreen&&smalllPlayer!=null){ + if(hasWindowFocus){//获取焦点 + onVideoResume() + }else{ + onVideoPause() + } } } @@ -333,8 +335,10 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { } fun exitFullScreenMode() { - fullVideoPlayer?.let { clearFullscreenLayout(it) } - FullVideoUtils.dismissOverlayView(false) + fullVideoPlayer?.let { + clearFullscreenLayout(it) + FullVideoUtils.dismissOverlayView(false) + } } private fun startWindowFullscreenOwn(context:Context){ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_right_rear_cam.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_right_rear_cam.png old mode 100644 new mode 100755 index 1e11ca725e..cc4cdceca5 Binary files a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_right_rear_cam.png and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_right_rear_cam.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml index 6821ee5e45..12245e03ec 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml @@ -49,34 +49,15 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"/> - - - - - + + + + + + + + + + \ No newline at end of file