视频播放器使用small适配,网络状态判断添加

This commit is contained in:
liujing
2021-11-07 20:18:37 +08:00
parent 8d0f2c2db2
commit 147c1f6837
4 changed files with 192 additions and 170 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;
@@ -72,6 +72,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
playerShow();//视频播放器
recyclerVie();//详情信息列表
otherFunctionButton();
netWorkStatus();
}
/**
@@ -133,6 +134,7 @@ 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);
});
@@ -140,7 +142,9 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
feedBackTraffic(0);
});
//重新连接
findViewById(R.id.notice_connect).setOnClickListener(v -> {
connect.setOnClickListener(v -> {
netWorkStatus();
startLive();
requestTrafficInfo();
});
requestTrafficInfo();
@@ -155,6 +159,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
if (i == 1) {
startAutoPilot();
}
dismiss();
}
@@ -174,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();
}
/**
* 获取交通事故详情
*/
@@ -246,170 +420,18 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
}
/**
* 暂停
* 判断网络状态
*/
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 netWorkStatus(){
if (NetworkUtils.isAvailable(getContext())) {
Log.d(TAG, "网络可用");
thumbnailImage.setVisibility(View.GONE);
connect.setVisibility(View.GONE);
} else {
thumbnailImage.setVisibility(View.VISIBLE);
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,7 +48,6 @@
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"