1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204 |
- package com.edufound.reader.cusview;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.graphics.Color;
- import android.media.AudioManager;
- import android.net.ConnectivityManager;
- import android.util.AttributeSet;
- import android.util.Log;
- import android.view.GestureDetector;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.PopupWindow;
- import android.widget.ProgressBar;
- import android.widget.SeekBar;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.edufound.reader.R;
- import com.edufound.reader.bean.ChannelCodeEnum;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.PlayLogBean;
- import com.edufound.reader.botsdk.BotRegisterListener;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.OkHttpClient;
- import com.edufound.reader.util.SizeUtils;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayDeque;
- import java.util.Date;
- import java.util.Timer;
- import java.util.TimerTask;
- import cn.jzvd.JZDataSource;
- import cn.jzvd.JZUtils;
- import cn.jzvd.Jzvd;
- public class RvListJzvdStd extends Jzvd {
- public static long LAST_GET_BATTERYLEVEL_TIME = 0;
- public static int LAST_GET_BATTERYLEVEL_PERCENT = 70;
- protected static Timer DISMISS_CONTROL_VIEW_TIMER;
- public ImageView backButton;
- public ProgressBar bottomProgressBar, loadingProgressBar;
- public TextView titleTextView;
- public ImageView posterImageView;
- public ImageView tinyBackImageView;
- public LinearLayout batteryTimeLayout;
- public ImageView batteryLevel;
- public TextView videoCurrentTime;
- public TextView replayTextView;
- public TextView clarity;
- public PopupWindow clarityPopWindow;
- public TextView mRetryBtn;
- public LinearLayout mRetryLayout;
- public BroadcastReceiver battertReceiver = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
- int level = intent.getIntExtra("level", 0);
- int scale = intent.getIntExtra("scale", 100);
- int percent = level * 100 / scale;
- LAST_GET_BATTERYLEVEL_PERCENT = percent;
- setBatteryLevel();
- try {
- jzvdContext.unregisterReceiver(battertReceiver);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- };
- protected Dialog mVolumeDialog;
- protected ProgressBar mDialogVolumeProgressBar;
- protected TextView mDialogVolumeTextView;
- protected ImageView mDialogVolumeImageView;
- protected Dialog mBrightnessDialog;
- protected ProgressBar mDialogBrightnessProgressBar;
- protected TextView mDialogBrightnessTextView;
- protected boolean mIsWifi;
- protected LinearLayout mLoadingLayout;
- public BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
- boolean isWifi = JZUtils.isWifiConnected(context);
- if (mIsWifi == isWifi) return;
- mIsWifi = isWifi;
- if (!mIsWifi && !WIFI_TIP_DIALOG_SHOWED && state == STATE_PLAYING) {
- startButton.performClick();
- showWifiDialog();
- }
- }
- }
- };
- protected ArrayDeque<Runnable> delayTask = new ArrayDeque<>();
- public VideoCallBack mCallBack;
- private boolean hideAllUI = false;
- public boolean canPause = true;
- private String playLogId = "";
- public RvListJzvdStd(Context context) {
- super(context);
- }
- public RvListJzvdStd(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- @Override
- public void init(Context context) {
- super.init(context);
- batteryTimeLayout = findViewById(R.id.battery_time_layout);
- bottomProgressBar = findViewById(R.id.bottom_progress);
- titleTextView = findViewById(R.id.title);
- backButton = findViewById(R.id.back);
- posterImageView = findViewById(R.id.poster);
- loadingProgressBar = findViewById(R.id.loading);
- mLoadingLayout = findViewById(R.id.loading_layout);
- tinyBackImageView = findViewById(R.id.back_tiny);
- batteryLevel = findViewById(R.id.battery_level);
- videoCurrentTime = findViewById(R.id.video_current_time);
- replayTextView = findViewById(R.id.replay_text);
- clarity = findViewById(R.id.clarity);
- mRetryBtn = findViewById(R.id.retry_btn);
- mRetryLayout = findViewById(R.id.retry_layout);
- if (batteryTimeLayout == null) {
- batteryTimeLayout = new LinearLayout(context);
- }
- if (bottomProgressBar == null) {
- bottomProgressBar = new ProgressBar(context);
- }
- if (titleTextView == null) {
- titleTextView = new TextView(context);
- }
- if (backButton == null) {
- backButton = new ImageView(context);
- }
- if (posterImageView == null) {
- posterImageView = new ImageView(context);
- }
- if (loadingProgressBar == null) {
- loadingProgressBar = new ProgressBar(context);
- }
- if (tinyBackImageView == null) {
- tinyBackImageView = new ImageView(context);
- }
- if (batteryLevel == null) {
- batteryLevel = new ImageView(context);
- }
- if (videoCurrentTime == null) {
- videoCurrentTime = new TextView(context);
- }
- if (replayTextView == null) {
- replayTextView = new TextView(context);
- }
- if (clarity == null) {
- clarity = new TextView(context);
- }
- if (mRetryBtn == null) {
- mRetryBtn = new TextView(context);
- }
- if (mRetryLayout == null) {
- mRetryLayout = new LinearLayout(context);
- }
- posterImageView.setOnClickListener(this);
- backButton.setOnClickListener(this);
- tinyBackImageView.setOnClickListener(this);
- clarity.setOnClickListener(this);
- mRetryBtn.setOnClickListener(this);
- }
- public void setUp(JZDataSource jzDataSource, int screen, Class mediaInterfaceClass, String readId) {
- if ((System.currentTimeMillis() - gobakFullscreenTime) < 200) {
- return;
- }
- if ((System.currentTimeMillis() - gotoFullscreenTime) < 200) {
- return;
- }
- super.setUp(jzDataSource, screen, mediaInterfaceClass);
- playLogId = readId;
- titleTextView.setText(jzDataSource.title);
- setScreen(screen);
- }
- @Override
- public void changeUrl(JZDataSource jzDataSource, long seekToInAdvance) {
- super.changeUrl(jzDataSource, seekToInAdvance);
- titleTextView.setText(jzDataSource.title);
- }
- public void setCanPause(boolean canpause) {
- this.canPause = canpause;
- }
- public void changeStartButtonSize(int size) {
- ViewGroup.LayoutParams lp = startButton.getLayoutParams();
- lp.height = size;
- lp.width = size;
- lp = loadingProgressBar.getLayoutParams();
- lp.height = size;
- lp.width = size;
- }
- @Override
- public int getLayoutId() {
- return R.layout.cusjzplayer_controller;
- }
- @Override
- public void onStateNormal() {
- super.onStateNormal();
- changeUiToNormal();
- }
- @Override
- public void onStatePreparing() {
- super.onStatePreparing();
- changeUiToPreparing();
- }
- public void onStatePreparingPlaying() {
- super.onStatePreparingPlaying();
- changeUIToPreparingPlaying();
- }
- public void onStatePreparingChangeUrl() {
- super.onStatePreparingChangeUrl();
- changeUIToPreparingChangeUrl();
- }
- @Override
- public void onStatePlaying() {
- super.onStatePlaying();
- changeUiToPlayingClear();
- }
- @Override
- public void onStatePause() {
- super.onStatePause();
- changeUiToPauseShow();
- cancelDismissControlViewTimer();
- }
- @Override
- public void onStateError() {
- super.onStateError();
- changeUiToError();
- }
- @Override
- public void onStateAutoComplete() {
- super.onStateAutoComplete();
- changeUiToComplete();
- cancelDismissControlViewTimer();
- // bottomProgressBar.setProgress(100);
- }
- @Override
- public void startVideo() {
- super.startVideo();
- registerWifiListener(getApplicationContext());
- }
- public void pauseVideo() {
- startButton.performClick();
- }
- public void startVideoPauseEnd() {
- startButton.performClick();
- }
- public JZDataSource getjzDataSource() {
- return jzDataSource;
- }
- /**
- * 双击
- */
- protected GestureDetector gestureDetector = new GestureDetector(getContext().getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {
- @Override
- public boolean onDoubleTap(MotionEvent e) {
- if (state == STATE_PLAYING || state == STATE_PAUSE) {
- Log.d(TAG, "doublClick [" + this.hashCode() + "] ");
- startButton.performClick();
- }
- return super.onDoubleTap(e);
- }
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- // if (!mChangePosition && !mChangeVolume) {
- // onClickUiToggle();
- // }
- return super.onSingleTapConfirmed(e);
- }
- @Override
- public void onLongPress(MotionEvent e) {
- super.onLongPress(e);
- }
- });
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- if (!canPause) {
- return true;
- }
- int id = v.getId();
- if (id == R.id.surface_container) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- // startButton.performClick();
- break;
- case MotionEvent.ACTION_MOVE:
- break;
- case MotionEvent.ACTION_UP:
- if (canPause) {
- startButton.performClick();
- }
- // startDismissControlViewTimer();
- // if (mChangePosition) {
- // long duration = getDuration();
- // int progress = (int) (mSeekTimePosition * 100 / (duration == 0 ? 1 : duration));
- // bottomProgressBar.setProgress(progress);
- // }
- break;
- }
- // gestureDetector.onTouchEvent(event);
- } else if (id == R.id.bottom_seek_progress) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- // cancelDismissControlViewTimer();
- break;
- case MotionEvent.ACTION_UP:
- // startDismissControlViewTimer();
- break;
- }
- }
- return super.onTouch(v, event);
- }
- return true;
- }
- @Override
- public void onClick(View v) {
- super.onClick(v);
- int i = v.getId();
- if (i == R.id.poster) {
- // clickPoster();
- } else if (i == R.id.surface_container) {
- // clickSurfaceContainer();
- // if (clarityPopWindow != null) {
- // clarityPopWindow.dismiss();
- // }
- } else if (i == R.id.back) {
- // clickBack();
- } else if (i == R.id.back_tiny) {
- // clickBackTiny();
- } else if (i == R.id.clarity) {
- // clickClarity();
- } else if (i == R.id.retry_btn) {
- // clickRetryBtn();
- }
- }
- protected void clickRetryBtn() {
- if (jzDataSource.urlsMap.isEmpty() || jzDataSource.getCurrentUrl() == null) {
- Toast.makeText(jzvdContext, getResources().getString(R.string.no_url), Toast.LENGTH_SHORT).show();
- return;
- }
- if (!jzDataSource.getCurrentUrl().toString().startsWith("file") && !
- jzDataSource.getCurrentUrl().toString().startsWith("/") &&
- !JZUtils.isWifiConnected(jzvdContext) && !WIFI_TIP_DIALOG_SHOWED) {
- showWifiDialog();
- return;
- }
- seekToInAdvance = mCurrentPosition;
- startVideo();
- }
- protected void clickClarity() {
- onCLickUiToggleToClear();
- LayoutInflater inflater = (LayoutInflater) jzvdContext
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.jz_layout_clarity, null);
- OnClickListener mQualityListener = v1 -> {
- int index = (int) v1.getTag();
- // this.seekToInAdvance = getCurrentPositionWhenPlaying();
- jzDataSource.currentUrlIndex = index;
- // onStatePreparingChangeUrl();
- changeUrl(jzDataSource, getCurrentPositionWhenPlaying());
- clarity.setText(jzDataSource.getCurrentKey().toString());
- for (int j = 0; j < layout.getChildCount(); j++) {//设置点击之后的颜色
- if (j == jzDataSource.currentUrlIndex) {
- ((TextView) layout.getChildAt(j)).setTextColor(Color.parseColor("#fff85959"));
- } else {
- ((TextView) layout.getChildAt(j)).setTextColor(Color.parseColor("#ffffff"));
- }
- }
- if (clarityPopWindow != null) {
- clarityPopWindow.dismiss();
- }
- };
- for (int j = 0; j < jzDataSource.urlsMap.size(); j++) {
- String key = jzDataSource.getKeyFromDataSource(j);
- TextView clarityItem = (TextView) View.inflate(jzvdContext, R.layout.jz_layout_clarity_item, null);
- clarityItem.setText(key);
- clarityItem.setTag(j);
- layout.addView(clarityItem, j);
- clarityItem.setOnClickListener(mQualityListener);
- if (j == jzDataSource.currentUrlIndex) {
- clarityItem.setTextColor(Color.parseColor("#fff85959"));
- }
- }
- clarityPopWindow = new PopupWindow(layout, JZUtils.dip2px(jzvdContext, 240), LayoutParams.MATCH_PARENT, true);
- clarityPopWindow.setContentView(layout);
- clarityPopWindow.setAnimationStyle(R.style.pop_animation);
- clarityPopWindow.showAtLocation(textureViewContainer, Gravity.END, 0, 0);
- // int offsetX = clarity.getMeasuredWidth() / 3;
- // int offsetY = clarity.getMeasuredHeight() / 3;
- // clarityPopWindow.update(clarity, -offsetX, -offsetY, Math.round(layout.getMeasuredWidth() * 2), layout.getMeasuredHeight());
- }
- protected void clickBackTiny() {
- clearFloatScreen();
- }
- protected void clickBack() {
- backPress();
- }
- protected void clickSurfaceContainer() {
- startDismissControlViewTimer();
- }
- protected void clickPoster() {
- if (jzDataSource == null || jzDataSource.urlsMap.isEmpty() || jzDataSource.getCurrentUrl() == null) {
- Toast.makeText(jzvdContext, getResources().getString(R.string.no_url), Toast.LENGTH_SHORT).show();
- return;
- }
- if (state == STATE_NORMAL) {
- if (!jzDataSource.getCurrentUrl().toString().startsWith("file") &&
- !jzDataSource.getCurrentUrl().toString().startsWith("/") &&
- !JZUtils.isWifiConnected(jzvdContext) && !WIFI_TIP_DIALOG_SHOWED) {
- showWifiDialog();
- return;
- }
- startVideo();
- } else if (state == STATE_AUTO_COMPLETE) {
- // onClickUiToggle();
- }
- }
- @Override
- public void setScreenNormal() {
- super.setScreenNormal();
- fullscreenButton.setImageResource(R.drawable.jz_enlarge);
- backButton.setVisibility(View.GONE);
- tinyBackImageView.setVisibility(View.INVISIBLE);
- changeStartButtonSize(SizeUtils.dp2px(getContext(), 80));
- batteryTimeLayout.setVisibility(View.GONE);
- clarity.setVisibility(View.GONE);
- }
- @Override
- public void setScreenFullscreen() {
- super.setScreenFullscreen();
- //进入全屏之后要保证原来的播放状态和ui状态不变,改变个别的ui
- fullscreenButton.setImageResource(R.drawable.jz_shrink);
- // backButton.setVisibility(View.VISIBLE);
- tinyBackImageView.setVisibility(View.INVISIBLE);
- batteryTimeLayout.setVisibility(View.VISIBLE);
- if (jzDataSource.urlsMap.size() == 1) {
- clarity.setVisibility(GONE);
- } else {
- clarity.setText(jzDataSource.getCurrentKey().toString());
- clarity.setVisibility(View.VISIBLE);
- }
- changeStartButtonSize(SizeUtils.dp2px(getContext(), 80));
- setSystemTimeAndBattery();
- }
- @Override
- public void setScreenTiny() {
- super.setScreenTiny();
- tinyBackImageView.setVisibility(View.VISIBLE);
- setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE);
- batteryTimeLayout.setVisibility(View.GONE);
- clarity.setVisibility(View.GONE);
- }
- @Override
- public void showWifiDialog() {
- super.showWifiDialog();
- AlertDialog.Builder builder = new AlertDialog.Builder(jzvdContext);
- builder.setMessage(getResources().getString(R.string.tips_not_wifi));
- builder.setPositiveButton(getResources().getString(R.string.tips_not_wifi_confirm), (dialog, which) -> {
- dialog.dismiss();
- WIFI_TIP_DIALOG_SHOWED = true;
- if (state == STATE_PAUSE) {
- startButton.performClick();
- } else {
- startVideo();
- }
- });
- builder.setNegativeButton(getResources().getString(R.string.tips_not_wifi_cancel), (dialog, which) -> {
- dialog.dismiss();
- releaseAllVideos();
- clearFloatScreen();
- });
- builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
- @Override
- public void onCancel(DialogInterface dialog) {
- dialog.dismiss();
- releaseAllVideos();
- clearFloatScreen();
- }
- });
- builder.create().show();
- }
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- // super.onStartTrackingTouch(seekBar);
- // cancelDismissControlViewTimer();
- }
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- // super.onStopTrackingTouch(seekBar);
- // startDismissControlViewTimer();
- }
- public void onClickUiToggle() {//这是事件
- if (bottomContainer.getVisibility() != View.VISIBLE) {
- setSystemTimeAndBattery();
- clarity.setText(jzDataSource.getCurrentKey().toString());
- }
- if (state == STATE_PREPARING) {
- changeUiToPreparing();
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- } else {
- setSystemTimeAndBattery();
- }
- } else if (state == STATE_PLAYING) {
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- changeUiToPlayingClear();
- } else {
- changeUiToPlayingShow();
- }
- } else if (state == STATE_PAUSE) {
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- changeUiToPauseClear();
- } else {
- changeUiToPauseShow();
- }
- }
- }
- public void setSystemTimeAndBattery() {
- SimpleDateFormat dateFormater = new SimpleDateFormat("HH:mm");
- Date date = new Date();
- videoCurrentTime.setText(dateFormater.format(date));
- if ((System.currentTimeMillis() - LAST_GET_BATTERYLEVEL_TIME) > 30000) {
- LAST_GET_BATTERYLEVEL_TIME = System.currentTimeMillis();
- jzvdContext.registerReceiver(
- battertReceiver,
- new IntentFilter(Intent.ACTION_BATTERY_CHANGED)
- );
- } else {
- setBatteryLevel();
- }
- }
- public void setBatteryLevel() {
- int percent = LAST_GET_BATTERYLEVEL_PERCENT;
- if (percent < 15) {
- batteryLevel.setBackgroundResource(R.drawable.jz_battery_level_10);
- } else if (percent >= 15 && percent < 40) {
- batteryLevel.setBackgroundResource(R.drawable.jz_battery_level_30);
- } else if (percent >= 40 && percent < 60) {
- batteryLevel.setBackgroundResource(R.drawable.jz_battery_level_50);
- } else if (percent >= 60 && percent < 80) {
- batteryLevel.setBackgroundResource(R.drawable.jz_battery_level_70);
- } else if (percent >= 80 && percent < 95) {
- batteryLevel.setBackgroundResource(R.drawable.jz_battery_level_90);
- } else if (percent >= 95 && percent <= 100) {
- batteryLevel.setBackgroundResource(R.drawable.jz_battery_level_100);
- }
- }
- //** 和onClickUiToggle重复,要干掉
- public void onCLickUiToggleToClear() {
- if (state == STATE_PREPARING) {
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- changeUiToPreparing();
- } else {
- }
- } else if (state == STATE_PLAYING) {
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- changeUiToPlayingClear();
- } else {
- }
- } else if (state == STATE_PAUSE) {
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- changeUiToPauseClear();
- } else {
- }
- } else if (state == STATE_AUTO_COMPLETE) {
- if (bottomContainer.getVisibility() == View.VISIBLE) {
- changeUiToComplete();
- } else {
- }
- }
- }
- @Override
- public void onProgress(int progress, long position, long duration) {
- super.onProgress(progress, position, duration);
- bottomProgressBar.setProgress(progress);
- }
- @Override
- public void setBufferProgress(int bufferProgress) {
- super.setBufferProgress(bufferProgress);
- bottomProgressBar.setSecondaryProgress(bufferProgress);
- }
- @Override
- public void resetProgressAndTime() {
- super.resetProgressAndTime();
- bottomProgressBar.setProgress(0);
- bottomProgressBar.setSecondaryProgress(0);
- }
- public void changeUiToNormal() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.VISIBLE, View.INVISIBLE, View.VISIBLE,
- View.INVISIBLE, View.VISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToPreparing() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.VISIBLE, View.VISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUIToPreparingPlaying() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.VISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUIToPreparingChangeUrl() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.VISIBLE, View.VISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToPlayingShow() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToPlayingClear() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.VISIBLE, View.INVISIBLE);
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToPauseShow() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToPauseClear() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.VISIBLE, View.INVISIBLE);
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToComplete() {
- switch (screen) {
- case SCREEN_NORMAL:
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.VISIBLE, View.INVISIBLE, View.VISIBLE,
- View.INVISIBLE, View.VISIBLE, View.INVISIBLE, View.INVISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void changeUiToError() {
- switch (screen) {
- case SCREEN_NORMAL:
- setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.VISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.VISIBLE);
- updateStartImage();
- break;
- case SCREEN_FULLSCREEN:
- setAllControlsVisiblity(View.VISIBLE, View.INVISIBLE, View.VISIBLE,
- View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.VISIBLE);
- updateStartImage();
- break;
- case SCREEN_TINY:
- break;
- }
- }
- public void setAllControlsVisiblity(int topCon, int bottomCon, int startBtn, int loadingPro,
- int posterImg, int bottomPro, int retryLayout) {
- if (hideAllUI) {
- topContainer.setVisibility(View.GONE);
- bottomContainer.setVisibility(View.GONE);
- bottomContainer.setVisibility(View.GONE);
- startButton.setVisibility(View.GONE);
- loadingProgressBar.setVisibility(View.GONE);
- mLoadingLayout.setVisibility(View.GONE);
- posterImageView.setVisibility(View.VISIBLE);
- bottomProgressBar.setVisibility(View.GONE);
- bottomProgressBar.setVisibility(View.GONE);
- mRetryLayout.setVisibility(View.GONE);
- return;
- }
- topContainer.setVisibility(topCon);
- bottomContainer.setVisibility(bottomCon);
- bottomContainer.setVisibility(View.INVISIBLE);
- startButton.setVisibility(startBtn);
- loadingProgressBar.setVisibility(loadingPro);
- mLoadingLayout.setVisibility(loadingPro);
- posterImageView.setVisibility(posterImg);
- bottomProgressBar.setVisibility(bottomPro);
- bottomProgressBar.setVisibility(View.INVISIBLE);
- mRetryLayout.setVisibility(retryLayout);
- }
- public void updateStartImage() {
- if (state == STATE_PLAYING) {
- startButton.setVisibility(VISIBLE);
- startButton.setImageResource(R.drawable.jz_click_pause_selector);
- replayTextView.setVisibility(GONE);
- } else if (state == STATE_ERROR) {
- startButton.setVisibility(INVISIBLE);
- replayTextView.setVisibility(GONE);
- } else if (state == STATE_AUTO_COMPLETE) {
- startButton.setVisibility(VISIBLE);
- startButton.setImageResource(R.drawable.jz_click_replay_selector);
- replayTextView.setVisibility(VISIBLE);
- } else {
- startButton.setImageResource(R.drawable.jz_click_play_selector);
- replayTextView.setVisibility(GONE);
- }
- }
- @Override
- public void showProgressDialog(float deltaX, String seekTime, long seekTimePosition, String totalTime, long totalTimeDuration) {
- // super.showProgressDialog(deltaX, seekTime, seekTimePosition, totalTime, totalTimeDuration);
- // if (mProgressDialog == null) {
- // View localView = LayoutInflater.from(jzvdContext).inflate(R.layout.jz_dialog_progress, null);
- // mDialogProgressBar = localView.findViewById(R.id.duration_progressbar);
- // mDialogSeekTime = localView.findViewById(R.id.tv_current);
- // mDialogTotalTime = localView.findViewById(R.id.tv_duration);
- // mDialogIcon = localView.findViewById(R.id.duration_image_tip);
- // mProgressDialog = createDialogWithView(localView);
- // }
- // if (!mProgressDialog.isShowing()) {
- // mProgressDialog.show();
- // }
- //
- // mDialogSeekTime.setText(seekTime);
- // mDialogTotalTime.setText(" / " + totalTime);
- // mDialogProgressBar.setProgress(totalTimeDuration <= 0 ? 0 : (int) (seekTimePosition * 100 / totalTimeDuration));
- // if (deltaX > 0) {
- // mDialogIcon.setBackgroundResource(R.drawable.jz_forward_icon);
- // } else {
- // mDialogIcon.setBackgroundResource(R.drawable.jz_backward_icon);
- // }
- // onCLickUiToggleToClear();
- }
- @Override
- public void dismissProgressDialog() {
- // super.dismissProgressDialog();
- // if (mProgressDialog != null) {
- // mProgressDialog.dismiss();
- // }
- }
- @Override
- public void showVolumeDialog(float deltaY, int volumePercent) {
- super.showVolumeDialog(deltaY, volumePercent);
- if (mVolumeDialog == null) {
- View localView = LayoutInflater.from(jzvdContext).inflate(R.layout.jz_dialog_volume, null);
- mDialogVolumeImageView = localView.findViewById(R.id.volume_image_tip);
- mDialogVolumeTextView = localView.findViewById(R.id.tv_volume);
- mDialogVolumeProgressBar = localView.findViewById(R.id.volume_progressbar);
- mVolumeDialog = createDialogWithView(localView);
- }
- if (!mVolumeDialog.isShowing()) {
- mVolumeDialog.show();
- }
- if (volumePercent <= 0) {
- mDialogVolumeImageView.setBackgroundResource(R.drawable.jz_close_volume);
- } else {
- mDialogVolumeImageView.setBackgroundResource(R.drawable.jz_add_volume);
- }
- if (volumePercent > 100) {
- volumePercent = 100;
- } else if (volumePercent < 0) {
- volumePercent = 0;
- }
- mDialogVolumeTextView.setText(volumePercent + "%");
- mDialogVolumeProgressBar.setProgress(volumePercent);
- onCLickUiToggleToClear();
- }
- @Override
- public void dismissVolumeDialog() {
- super.dismissVolumeDialog();
- if (mVolumeDialog != null) {
- mVolumeDialog.dismiss();
- }
- }
- @Override
- public void showBrightnessDialog(int brightnessPercent) {
- super.showBrightnessDialog(brightnessPercent);
- if (mBrightnessDialog == null) {
- View localView = LayoutInflater.from(jzvdContext).inflate(R.layout.jz_dialog_brightness, null);
- mDialogBrightnessTextView = localView.findViewById(R.id.tv_brightness);
- mDialogBrightnessProgressBar = localView.findViewById(R.id.brightness_progressbar);
- mBrightnessDialog = createDialogWithView(localView);
- }
- if (!mBrightnessDialog.isShowing()) {
- mBrightnessDialog.show();
- }
- if (brightnessPercent > 100) {
- brightnessPercent = 100;
- } else if (brightnessPercent < 0) {
- brightnessPercent = 0;
- }
- mDialogBrightnessTextView.setText(brightnessPercent + "%");
- mDialogBrightnessProgressBar.setProgress(brightnessPercent);
- onCLickUiToggleToClear();
- }
- @Override
- public void dismissBrightnessDialog() {
- super.dismissBrightnessDialog();
- if (mBrightnessDialog != null) {
- mBrightnessDialog.dismiss();
- }
- }
- public Dialog createDialogWithView(View localView) {
- Dialog dialog = new Dialog(jzvdContext, R.style.jz_style_dialog_progress);
- dialog.setContentView(localView);
- Window window = dialog.getWindow();
- window.addFlags(Window.FEATURE_ACTION_BAR);
- window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
- window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
- window.setLayout(-2, -2);
- WindowManager.LayoutParams localLayoutParams = window.getAttributes();
- localLayoutParams.gravity = Gravity.CENTER;
- window.setAttributes(localLayoutParams);
- return dialog;
- }
- public void startDismissControlViewTimer() {
- // cancelDismissControlViewTimer();
- // DISMISS_CONTROL_VIEW_TIMER = new Timer();
- // mDismissControlViewTimerTask = new DismissControlViewTimerTask();
- // DISMISS_CONTROL_VIEW_TIMER.schedule(mDismissControlViewTimerTask, 2500);
- }
- public void cancelDismissControlViewTimer() {
- // if (DISMISS_CONTROL_VIEW_TIMER != null) {
- // DISMISS_CONTROL_VIEW_TIMER.cancel();
- // }
- // if (mDismissControlViewTimerTask != null) {
- // mDismissControlViewTimerTask.cancel();
- // }
- }
- public void setVideoCallBack(VideoCallBack callBack) {
- this.mCallBack = callBack;
- }
- @Override
- public void onError(int what, int extra) {
- super.onError(what, extra);
- if (this.mCallBack != null) {
- this.mCallBack.onError(what, extra);
- }
- }
- @Override
- public void onInfo(int what, int extra) {
- super.onInfo(what, extra);
- switch (what) {
- case STATE_PREPARING_PLAYING:
- if (playLogId != null && !playLogId.equals("")) {
- postPlayLog(playLogId);
- } else {
- Logger.e("playLogId==null");
- }
- break;
- }
- if (this.mCallBack != null) {
- this.mCallBack.onInfo(what, extra);
- }
- }
- @Override
- public void onCompletion() {
- if (screen == SCREEN_FULLSCREEN) {
- onStateAutoComplete();
- } else {
- Runtime.getRuntime().gc();
- Log.i(TAG, "onAutoCompletion " + " [" + this.hashCode() + "] ");
- Logger.e("screen!=SCREEN_FULLSCREEN");
- cancelProgressTimer();
- dismissBrightnessDialog();
- dismissProgressDialog();
- dismissVolumeDialog();
- onStateAutoComplete();
- mediaInterface.release();
- JZUtils.scanForActivity(getContext()).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- }
- if (mCallBack != null) {
- resView();
- mCallBack.onComplete();
- }
- // CToast.makeText(jzvdContext, "onCompletion", 3000).show();
- }
- @Override
- public void onPrepared() {
- super.onPrepared();
- if (mCallBack != null) {
- mCallBack.onPrepared();
- }
- }
- void resView() {
- mediaInterface.release();
- // backButton = null;
- // bottomProgressBar = null;
- // loadingProgressBar = null;
- // titleTextView = null;
- // posterImageView = null;
- // tinyBackImageView = null;
- // batteryTimeLayout = null;
- // batteryLevel = null;
- // videoCurrentTime = null;
- // replayTextView = null;
- // clarity = null;
- // mRetryBtn = null;
- // mRetryLayout = null;
- // battertReceiver = null;
- // mDialogBrightnessProgressBar = null;
- // mDialogBrightnessTextView = null;
- // mBrightnessDialog = null;
- // mDialogVolumeImageView = null;
- // mDialogVolumeTextView = null;
- // mDialogVolumeProgressBar = null;
- // mVolumeDialog = null;
- // wifiReceiver = null;
- // Runtime.getRuntime().gc();
- // System.gc();
- }
- public void postPlayLog(String readid) {
- OkHttpClient.doPostAsync(new HttpInfo.Builder().setUrl(Consts.getFinalApi() + "/playLog").addParamJson("{\"userReadId\":\"" + readid + "\",\"playStopTime\":\"0\",\"channel\":\"" + Consts.getUMengChannel() + "\"}"), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- //播放记录
- HttpResultBean<PlayLogBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PlayLogBean>>() {
- }.getType());
- //
- if (Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
- /**
- * 免责声明!!!!!!!!!!!!!!!!!!
- *判断是否是官方的,官方的就是免费的。不是官方的就是收费的。但是无奈老板让收费的也播放。不知道什么意思。如有问题,请勿追究程序员责任。
- *@z
- */
- if (bean.getData().getType().equals("EXAMPLE")) {
- //官方的
- // Logger.e("上报官方免费的");
- BotRegisterListener.uploadUsage("0", readid, "video", "unpurchased");
- } else {
- // Logger.e("上报别人的书序收费的");
- BotRegisterListener.uploadUsage("1", readid, "video", "unpurchased");
- }
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- }
- });
- }
- @Override
- public void reset() {
- cancelDismissControlViewTimer();
- // unregisterWifiListener(getApplicationContext());
- Log.i(TAG, "reset " + " [" + this.hashCode() + "] ");
- cancelProgressTimer();
- dismissBrightnessDialog();
- dismissProgressDialog();
- dismissVolumeDialog();
- onStateNormal();
- textureViewContainer.removeAllViews();
- AudioManager mAudioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
- mAudioManager.abandonAudioFocus(onAudioFocusChangeListener);
- JZUtils.scanForActivity(getContext()).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- if (mediaInterface != null) mediaInterface.release();
- }
- public void dissmissControlView() {
- if (state != STATE_NORMAL
- && state != STATE_ERROR
- && state != STATE_AUTO_COMPLETE) {
- post(() -> {
- bottomContainer.setVisibility(View.INVISIBLE);
- topContainer.setVisibility(View.INVISIBLE);
- startButton.setVisibility(View.INVISIBLE);
- if (screen != SCREEN_TINY) {
- bottomProgressBar.setVisibility(View.VISIBLE);
- }
- });
- }
- }
- public void registerWifiListener(Context context) {
- // if (context == null) return;
- // mIsWifi = JZUtils.isWifiConnected(context);
- // IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
- // context.registerReceiver(wifiReceiver, intentFilter);
- }
- public void unregisterWifiListener(Context context) {
- // if (context == null) return;
- // try {
- // context.unregisterReceiver(wifiReceiver);
- // } catch (IllegalArgumentException e) {
- // e.printStackTrace();
- // }
- }
- public void setHideAllUI(boolean hideALl) {
- hideAllUI = hideALl;
- }
- public void seekTo(int seek) {
- if (mediaInterface != null) {
- mediaInterface.seekTo(seek);
- }
- }
- public class DismissControlViewTimerTask extends TimerTask {
- @Override
- public void run() {
- dissmissControlView();
- }
- }
- public interface VideoCallBack {
- void onComplete();
- void onError(int what, int extra);
- void onInfo(int what, int extra);
- void onPrepared();
- }
- public String getVideoTitle() {
- return jzDataSource.title;
- }
- }
|