video_duration = mediaPlayer.getDuration() / 1000
video_duration需要在prepare()监听中进行初始化
通知系统,将图片、视频更新到系统相册中:
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(new File(imgPath))));
在插入图片时,自定义了一个路径,向系统发送了一个广播,更新相册,如果后期用户删了这个相册,如果再向系统发送广播更新相册,这时相册有可能会更新失败;
so,这个路径可以在删除之后,还可以重新创建
String absolutePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
视频名称,年月日的文件夹名和文件名命名地址的方法:
strRecordFile = Environment.getExternalStorageDirectory().getPath() + “/EZOpenSDK/Records/” + String.format("%tY", date)
+ String.format("%tm", date) + String.format("%td", date) + “/”
+ String.format("%tH", date) + String.format("%tM", date) + String.format("%tS", date) + String.format("%tL", date) + “.mp4”;
地址为:/storage/emulated/0/EZOpenSDK/Records/20190329/145309363.mp4
非常好用
图片插入系统列表中为:
MediaStore.Images.Media.insertImage(context.getContentResolver(), filePic.getAbsolutePath(), savePath, “视频监控图片集”);
Uri uri = Uri.fromFile(new File(DIR_IMAGE));
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(uri);
context.sendBroadcast(intent);
好了,结束
---------------------视频设置静音与恢复静音-------------------------------------
public void closeVolume(){
Log.e(TAG, "closeVolume: " );
if (mediaPlayer==null){
return;
}
mediaPlayer.setVolume(0, 0);
}
public void openVolume(){
Log.e(TAG, "openVolume: " );
if (mediaPlayer==null){
return;
}
mediaPlayer.setVolume( 1.0f, 1.0f);
}
```
private void initPlayer() {
if (adInfoUtils == null) {
Toast.makeText(context, “初始化失败,请稍后再试”, Toast.LENGTH_SHORT).show();
return;
}
NavigationBarUtil.setFullScreen((Activity) context);
if (videoView == null) {
videoView = LayoutInflater.from(context).inflate(R.layout.view_video_play, null);
layout_icon = videoView.findViewById(R.id.video_layout_icon);
progressBar = videoView.findViewById(R.id.video_progress);
tv_time = videoView.findViewById(R.id.video_tv_time);
tv_voice = videoView.findViewById(R.id.video_tv_voice);
tv_voice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (tv_voice.isSelected()) {
openVolume();
} else {
closeVolume();
}
if (tv_voice.isSelected()) {
tv_voice.setSelected(false);
} else {
tv_voice.setSelected(true);
}
}
});
SurfaceView surface = videoView.findViewById(R.id.video_surface);
SurfaceHolder surfaceHolder = surface.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDisplay(surfaceHolder);
//设置显示视频显示在SurfaceView上
try {
mediaPlayer.setDataSource(adInfoUtils.ad_video_url);
mediaPlayer.prepareAsync();
long startTime=System.currentTimeMillis();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
progressBar.setVisibility(View.GONE);
Log.e("TAG", "onPrepared 完成,加载用时: "+(System.currentTimeMillis()-startTime ));
onLoadListener.onSuccess();
video_duration = mediaPlayer.getDuration() / 1000;
}
});
video_duration = mediaPlayer.getDuration() / 1000;
video_position = video_duration;
tv_time.setText(video_position + "");
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (tv_time != null) {
tv_time.setText("0");
showApkDialogView();
commitAdEvent(adInfoUtils.list_video_complete);
}
}
});
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
commitAdEvent(adInfoUtils.list_video_error);
return false;
}
});
commitAdEvent(adInfoUtils.list_imp_tracks);
video_first = BigDecimalUtils.div("1", "4", 5);
video_midpoint = BigDecimalUtils.div("1", "2", 5);
video_third = BigDecimalUtils.div("3", "4", 5);
initTimer();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
}
});
videoView.findViewById(R.id.video_layout_item).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (adInfoUtils.is_download == 1) {
startDownload();
}
commitAdEvent(adInfoUtils.list_click_tracks);
}
});
// layout.addView(videoView);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
//设置顶部,左边布局
params.gravity = Gravity.TOP | Gravity.LEFT;
if (context instanceof Activity) {
((Activity) context).addContentView(videoView, params);
}
if (TextUtils.isEmpty(adInfoUtils.ad_video_icon)) {
layout_icon.setVisibility(View.GONE);
}
videoView.setVisibility(View.INVISIBLE);
}
}