diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index 4b92553..bfcfb40 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -44,6 +44,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index 4b92553..bfcfb40 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -44,6 +44,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_handled_detail.xml b/app/src/main/res/layout/activity_case_handled_detail.xml index faa06a3..4efc380 100644 --- a/app/src/main/res/layout/activity_case_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_handled_detail.xml @@ -1,5 +1,6 @@ @@ -242,6 +243,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index 4b92553..bfcfb40 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -44,6 +44,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_handled_detail.xml b/app/src/main/res/layout/activity_case_handled_detail.xml index faa06a3..4efc380 100644 --- a/app/src/main/res/layout/activity_case_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_handled_detail.xml @@ -1,5 +1,6 @@ @@ -242,6 +243,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_detail.xml b/app/src/main/res/layout/activity_case_todo_detail.xml index 8e25d43..84e744f 100644 --- a/app/src/main/res/layout/activity_case_todo_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_detail.xml @@ -138,6 +138,7 @@ android:id="@+id/ttt" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_centerVertical="true" android:text="案卷图片" android:textSize="@dimen/textFontSize" /> @@ -151,6 +152,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index 4b92553..bfcfb40 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -44,6 +44,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_handled_detail.xml b/app/src/main/res/layout/activity_case_handled_detail.xml index faa06a3..4efc380 100644 --- a/app/src/main/res/layout/activity_case_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_handled_detail.xml @@ -1,5 +1,6 @@ @@ -242,6 +243,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_detail.xml b/app/src/main/res/layout/activity_case_todo_detail.xml index 8e25d43..84e744f 100644 --- a/app/src/main/res/layout/activity_case_todo_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_detail.xml @@ -138,6 +138,7 @@ android:id="@+id/ttt" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_centerVertical="true" android:text="案卷图片" android:textSize="@dimen/textFontSize" /> @@ -151,6 +152,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_handled_detail.xml b/app/src/main/res/layout/activity_case_todo_handled_detail.xml index 2fec400..88e72b4 100644 --- a/app/src/main/res/layout/activity_case_todo_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_handled_detail.xml @@ -1,5 +1,6 @@ @@ -239,6 +240,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index 4b92553..bfcfb40 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -44,6 +44,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_handled_detail.xml b/app/src/main/res/layout/activity_case_handled_detail.xml index faa06a3..4efc380 100644 --- a/app/src/main/res/layout/activity_case_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_handled_detail.xml @@ -1,5 +1,6 @@ @@ -242,6 +243,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_detail.xml b/app/src/main/res/layout/activity_case_todo_detail.xml index 8e25d43..84e744f 100644 --- a/app/src/main/res/layout/activity_case_todo_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_detail.xml @@ -138,6 +138,7 @@ android:id="@+id/ttt" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_centerVertical="true" android:text="案卷图片" android:textSize="@dimen/textFontSize" /> @@ -151,6 +152,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_handled_detail.xml b/app/src/main/res/layout/activity_case_todo_handled_detail.xml index 2fec400..88e72b4 100644 --- a/app/src/main/res/layout/activity_case_todo_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_handled_detail.xml @@ -1,5 +1,6 @@ @@ -239,6 +240,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_verified_detail.xml b/app/src/main/res/layout/activity_case_verified_detail.xml index e9a7161..35926f3 100644 --- a/app/src/main/res/layout/activity_case_verified_detail.xml +++ b/app/src/main/res/layout/activity_case_verified_detail.xml @@ -1,5 +1,6 @@ @@ -78,24 +79,11 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - - + - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - + - - diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java index 931d66d..8fb6234 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -28,7 +29,6 @@ **/ public class CaseCheckActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.checkTopLayout) QMUITopBarLayout checkTopLayout; @BindView(R.id.checkTabLayout) @@ -60,7 +60,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); checkViewPager.setAdapter(adapter); //绑定TabLayout checkTabLayout.setupWithViewPager(checkViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 066a6f6..dffc81c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -12,6 +14,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -43,11 +47,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { @@ -75,8 +81,6 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; @BindView(R.id.caseHandleResultView) @@ -85,6 +89,10 @@ TextView caseHandleTimeView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.addImageView) ImageView addImageView; @BindView(R.id.caseCheckOptView) @@ -104,7 +112,9 @@ private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private List realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -119,6 +129,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -136,6 +148,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) @@ -291,6 +330,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { @@ -438,5 +491,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 0792ba3..9b2dc41 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; @@ -11,24 +12,28 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -57,12 +62,16 @@ RecyclerView caseHandleRecyclerView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; - private MediaPlayer mediaPlayer; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -92,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.handleLayout}) @@ -160,10 +195,6 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //处理图片 @@ -215,6 +246,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 46aa7ad..a3b8c1b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -2,8 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; @@ -12,6 +13,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -23,17 +26,18 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - private static final String TAG = "CaseDetailActivity"; private Context context = CaseDetailActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @@ -59,11 +63,18 @@ RecyclerView caseHandleImageView; @BindView(R.id.caseCheckRecyclerView) RecyclerView caseCheckRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -84,6 +95,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -91,7 +104,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -181,6 +220,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -189,7 +242,7 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.caseAudioView, R.id.handleRecordLayout}) + @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) @Override public void onClick(View v) { switch (v.getId()) { @@ -210,12 +263,6 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; - case R.id.caseAudioView: - String audioIdVerify = data.getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - break; case R.id.handleRecordLayout: OtherUtils.showCaseProcess(this, data.getProcessId()); break; @@ -228,5 +275,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java index 76dd692..3b72d2f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleActivity.java @@ -25,7 +25,6 @@ public class CaseHandleActivity extends BaseActivity { - private static final String TAG = "CaseHandleActivity"; private static final String[] pageTitles = {"超时案卷", "紧急案卷", "待办案卷", "已办案卷"}; @BindView(R.id.handleTopLayout) QMUITopBarLayout handleTopLayout; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index b3ac4e1..6622445 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -3,6 +3,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.EditText; @@ -14,6 +16,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -45,11 +49,13 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseHandleView { @@ -73,6 +79,10 @@ TextView caseHandleView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseStartTimeView) TextView caseStartTimeView; @BindView(R.id.caseEndTimeView) @@ -105,7 +115,9 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private UploadImagePresenterImpl uploadImagePresenter; private CaseHandlePresenterImpl caseHandlePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -120,6 +132,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -138,6 +152,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -177,6 +218,20 @@ imageAdapter.setDeleteView(false); } + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } + caseStartTimeView.setText(data.getCreateTime()); caseEndTimeView.setText(data.getNodeLimittime()); } @@ -427,5 +482,10 @@ if (caseHandlePresenter != null) { caseHandlePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 20e9f96..b6c3b77 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { @@ -53,9 +60,16 @@ RecyclerView casePicRecyclerView; @BindView(R.id.caseHandleImageView) RecyclerView caseHandleImageView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); private CaseDetailPresenterImpl caseDetailPresenter; + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -148,6 +190,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -191,5 +247,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index dfc9961..67144b6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -108,7 +108,7 @@ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 - ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_SERVICE_URL); + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); Basemap basemap = new Basemap(baseLayer); arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index f38caef..f2d4cac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseCaseActivity; @@ -30,11 +33,13 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, ICaseCommonSentenceView, ICaseUpdateSuperviseView { @@ -52,11 +57,14 @@ TextView caseDescriptionView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; @BindView(R.id.caseHandleResultView) TextView caseHandleResultView; @BindView(R.id.caseCommonSentenceView) TextView caseCommonSentenceView; - @BindView(R.id.submitButton) QMUIRoundButton submitButton; @@ -67,7 +75,9 @@ private CaseDetailPresenterImpl caseDetailPresenter; private CaseCommonSentencePresenterImpl commonSentencePresenter; private CaseUpdateSupervisePresenterImpl updateSupervisePresenter; - + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; private QMUITipDialog submitDialog; @Override @@ -82,6 +92,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + title = getIntent().getStringExtra("title"); id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); @@ -98,7 +110,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @OnClick({R.id.locationMapView, R.id.caseHandleLayout, R.id.caseCommonSentenceLayout, R.id.submitButton}) @@ -178,6 +216,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -242,5 +294,10 @@ if (updateSupervisePresenter != null) { updateSupervisePresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 68b6925..712cb11 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; import android.widget.TextView; @@ -10,6 +12,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.casic.dcms.R; import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; @@ -21,12 +25,15 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; public class CaseTodoHandledDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { @@ -53,9 +60,16 @@ TextView caseSuperviseView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; + @BindView(R.id.videoPlayerView) + JCVideoPlayerStandard videoPlayerView; private CaseDetailPresenterImpl caseDetailPresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private MediaPlayer mediaPlayer; + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -76,6 +90,8 @@ @Override public void initData() { + mediaPlayer = new MediaPlayer(); + String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); @@ -83,7 +99,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -124,6 +166,20 @@ }); imageAdapter.setDeleteView(false); } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + this.videoUrl = videoFile; + } } } @@ -167,5 +223,10 @@ if (caseDetailPresenter != null) { caseDetailPresenter.disposeRetrofitRequest(); } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 91eb6bc..4244758 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -20,12 +20,12 @@ import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.ItemDecorationSpace; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.IOException; import java.util.ArrayList; @@ -62,18 +62,16 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; private CaseDetailPresenterImpl caseDetailPresenter; private MediaPlayer mediaPlayer; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -103,7 +101,33 @@ @Override public void initEvent() { - + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -144,64 +168,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java index 7a4b3fd..4bc83aa 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class CaseVerifyActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.verifyTopLayout) QMUITopBarLayout verifyTopLayout; @BindView(R.id.verifyTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseVerifyFragment()); fragmentList.add(new CaseVerifiedFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); verifyViewPager.setAdapter(adapter); //绑定TabLayout verifyTabLayout.setupWithViewPager(verifyViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 3e562ac..ee5fa85 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -38,7 +38,6 @@ import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.ICaseSmallClassView; import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -91,14 +90,10 @@ TextView caseEndTimeView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; - @BindView(R.id.emptyImageView) - TextView emptyImageView; - @BindView(R.id.caseAudioView) - TextView caseAudioView; + @BindView(R.id.caseAudioButton) + QMUIRoundButton caseAudioButton; @BindView(R.id.videoPlayerView) JCVideoPlayerStandard videoPlayerView; - @BindView(R.id.emptyVideoView) - TextView emptyVideoView; @BindView(R.id.caseOpinionView) TextView caseOpinionView; @BindView(R.id.caseConditionView) @@ -146,6 +141,8 @@ private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private String audioUrl = ""; + private String videoUrl = ""; @Override public int initLayoutView() { @@ -180,6 +177,33 @@ @Override public void initEvent() { submitButton.setChangeAlphaWhenPress(true); + if (!TextUtils.isEmpty(audioUrl)) { + try { + mediaPlayer.setDataSource(audioUrl); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + caseAudioButton.setChangeAlphaWhenPress(true); + caseAudioButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + }); + } + if (!TextUtils.isEmpty(videoUrl)) { + videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); + videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.thumbImageView); + } } @Override @@ -233,64 +257,20 @@ } }); imageAdapter.setDeleteView(false); - } else { - emptyImageView.setVisibility(View.VISIBLE); - emptyImageView.setText("该案卷无图片材料"); - emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); } //音频 String audioFile = data.getAudioIdVerify(); - if (TextUtils.isEmpty(audioFile)) { - caseAudioView.setText("该案卷无音频材料"); - caseAudioView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); - } else { - String audioUrl; - if (audioFile.contains(",")) { - audioUrl = StringHelper.appendCompleteURL(audioFile.split(",")[0]); - } else { - audioUrl = StringHelper.appendCompleteURL(audioFile); - } - caseAudioView.setText("播放音频材料"); - caseAudioView.setTextColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)); - try { - mediaPlayer.setDataSource(audioUrl); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.prepareAsync(); - } catch (IOException e) { - e.printStackTrace(); - } - caseAudioView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - } - } - }); + if (!TextUtils.isEmpty(audioFile)) { + caseAudioButton.setVisibility(View.VISIBLE); + this.audioUrl = audioFile; } //视频 String videoFile = data.getVideoIdVerify(); if (!TextUtils.isEmpty(audioFile)) { videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl; - if (videoFile.contains(",")) { - videoUrl = StringHelper.appendCompleteURL(videoFile.split(",")[0]); - } else { - videoUrl = StringHelper.appendCompleteURL(videoFile); - } - videoPlayerView.setUp(videoUrl, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL); - videoPlayerView.tinyBackImageView.setVisibility(View.INVISIBLE); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.thumbImageView); - } else { - emptyVideoView.setVisibility(View.VISIBLE); - emptyVideoView.setText("该案卷无视频材料"); - emptyVideoView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + this.videoUrl = videoFile; } } } diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java index c2c4b8f..5da7fb4 100644 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java @@ -58,7 +58,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java index fd79817..338b20e 100644 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java @@ -63,7 +63,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(ExcelFragment.newInstance(TAG)); fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.PAGE_TITLES, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); eventViewPager.setAdapter(adapter); //绑定TabLayout eventTabLayout.setupWithViewPager(eventViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 4c223cd..1230410 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -188,7 +188,7 @@ case Constant.PUSH_REGISTER: String clientId = (String) msg.obj; Log.d(TAG, "注册个推Client: " + clientId); - reference.get().registerPresenter.onReadyRetrofitRequest(clientId); + mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); break; case Constant.PUSH_CREATE_NOTIFICATION: Log.d(TAG, "创建通知栏"); diff --git a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java index 246dc6f..90f26d0 100644 --- a/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/OvertimeCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.overtime.CaseHandledFragment; import com.casic.dcms.ui.fragment.overtime.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class OvertimeCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.overtimeTopLayout) QMUITopBarLayout overtimeTopLayout; @BindView(R.id.overtimeTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); overtimeViewPager.setAdapter(adapter); //绑定TabLayout overtimeTabLayout.setupWithViewPager(overtimeViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java index 3c7a8e3..807e94d 100644 --- a/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/UrgentCaseActivity.java @@ -13,6 +13,7 @@ import com.casic.dcms.base.BaseActivity; import com.casic.dcms.ui.fragment.urgent.CaseHandledFragment; import com.casic.dcms.ui.fragment.urgent.CaseTodoFragment; +import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -23,7 +24,6 @@ public class UrgentCaseActivity extends BaseActivity { - private static final String[] pageTitles = {"待办案卷", "已办案卷"}; @BindView(R.id.urgentTopLayout) QMUITopBarLayout urgentTopLayout; @BindView(R.id.urgentTabLayout) @@ -55,7 +55,7 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new CaseTodoFragment()); fragmentList.add(new CaseHandledFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); urgentViewPager.setAdapter(adapter); //绑定TabLayout urgentTabLayout.setupWithViewPager(urgentViewPager); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java index 34b3ab8..ff27e20 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/handle/CaseHandledFragment.java @@ -32,7 +32,6 @@ public class CaseHandledFragment extends BaseFragment implements ICaseHandledListView { - private static final String TAG = "CaseHandledFragment"; private Context context; @BindView(R.id.emptyView) diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 74442db..a74131b 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -30,7 +30,8 @@ Color.rgb(216, 248, 183), Color.rgb(129, 178, 20), Color.rgb(120, 104, 230)}; - public static final String[] PAGE_TITLES = {"表格", "饼状图"}; + public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; + public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String IP_KEY = "BASE_IP"; public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L; @@ -54,5 +55,6 @@ public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 + public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml index a3c7a00..5322d70 100644 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -83,19 +83,43 @@ - + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml index cea48fb..d513b5d 100644 --- a/app/src/main/res/layout/activity_case_checked_detail.xml +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -1,5 +1,6 @@ @@ -37,17 +38,6 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - @@ -101,23 +91,24 @@ android:text="案卷录音" android:textSize="@dimen/textFontSize" /> - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - - - + - + + + + + + + + android:text="案卷视频" + android:textSize="@dimen/textFontSize" /> + + diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index 4b92553..bfcfb40 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -44,6 +44,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_handled_detail.xml b/app/src/main/res/layout/activity_case_handled_detail.xml index faa06a3..4efc380 100644 --- a/app/src/main/res/layout/activity_case_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_handled_detail.xml @@ -1,5 +1,6 @@ @@ -242,6 +243,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_detail.xml b/app/src/main/res/layout/activity_case_todo_detail.xml index 8e25d43..84e744f 100644 --- a/app/src/main/res/layout/activity_case_todo_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_detail.xml @@ -138,6 +138,7 @@ android:id="@+id/ttt" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_centerVertical="true" android:text="案卷图片" android:textSize="@dimen/textFontSize" /> @@ -151,6 +152,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_todo_handled_detail.xml b/app/src/main/res/layout/activity_case_todo_handled_detail.xml index 2fec400..88e72b4 100644 --- a/app/src/main/res/layout/activity_case_todo_handled_detail.xml +++ b/app/src/main/res/layout/activity_case_todo_handled_detail.xml @@ -1,5 +1,6 @@ @@ -239,6 +240,53 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_verified_detail.xml b/app/src/main/res/layout/activity_case_verified_detail.xml index e9a7161..35926f3 100644 --- a/app/src/main/res/layout/activity_case_verified_detail.xml +++ b/app/src/main/res/layout/activity_case_verified_detail.xml @@ -1,5 +1,6 @@ @@ -78,24 +79,11 @@ android:layout_height="wrap_content" android:layout_marginStart="25dp" android:layout_toEndOf="@id/ttt" /> - - - + - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - + - - diff --git a/app/src/main/res/layout/activity_case_verify_detail.xml b/app/src/main/res/layout/activity_case_verify_detail.xml index 4e6aff8..3343b3e 100644 --- a/app/src/main/res/layout/activity_case_verify_detail.xml +++ b/app/src/main/res/layout/activity_case_verify_detail.xml @@ -114,9 +114,7 @@ - + - + android:text="播放录音" + android:textColor="@color/white" + android:textSize="@dimen/titleFontSize" + android:visibility="gone" + app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_radius="5dp" /> - + - + - - - +