|
@@ -1,906 +0,0 @@
|
|
-package com.edufound.android.xyyf.video;
|
|
|
|
-
|
|
|
|
-import android.app.Dialog;
|
|
|
|
-import android.content.Context;
|
|
|
|
-import android.content.Intent;
|
|
|
|
-import android.graphics.Bitmap;
|
|
|
|
-import android.graphics.BitmapFactory;
|
|
|
|
-import android.graphics.Color;
|
|
|
|
-import android.graphics.drawable.AnimationDrawable;
|
|
|
|
-import android.graphics.drawable.Drawable;
|
|
|
|
-import android.media.AudioManager;
|
|
|
|
-import android.media.MediaPlayer;
|
|
|
|
-import android.net.Uri;
|
|
|
|
-import android.os.Bundle;
|
|
|
|
-import android.os.Handler;
|
|
|
|
-import android.os.Message;
|
|
|
|
-import android.view.Display;
|
|
|
|
-import android.view.GestureDetector;
|
|
|
|
-import android.view.Gravity;
|
|
|
|
-import android.view.KeyEvent;
|
|
|
|
-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.FrameLayout;
|
|
|
|
-import android.widget.ImageView;
|
|
|
|
-import android.widget.LinearLayout;
|
|
|
|
-import android.widget.SeekBar;
|
|
|
|
-import android.widget.TextView;
|
|
|
|
-
|
|
|
|
-import com.edufound.android.xyyf.R;
|
|
|
|
-import com.edufound.android.xyyf.application.EApplication;
|
|
|
|
-import com.edufound.android.xyyf.base.BaseModel;
|
|
|
|
-import com.edufound.android.xyyf.base.BasePersenter;
|
|
|
|
-import com.edufound.android.xyyf.util.AesUtil;
|
|
|
|
-import com.edufound.android.xyyf.util.ContextUtil;
|
|
|
|
-import com.edufound.android.xyyf.util.DeviceUtil;
|
|
|
|
-import com.edufound.android.xyyf.util.DrawableUtil;
|
|
|
|
-import com.edufound.android.xyyf.util.EduFoundUtil;
|
|
|
|
-import com.edufound.android.xyyf.util.Logger;
|
|
|
|
-import com.edufound.android.xyyf.util.ToastUtil;
|
|
|
|
-import com.edufound.android.xyyf.view.ErrorView;
|
|
|
|
-import com.google.gson.Gson;
|
|
|
|
-import com.warkiz.widget.IndicatorSeekBar;
|
|
|
|
-import com.warkiz.widget.TickMarkType;
|
|
|
|
-
|
|
|
|
-public class VideoPersenter implements VideoIPersenter, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
|
|
|
|
-
|
|
|
|
- private VideoPersenter mPersenter;
|
|
|
|
- private VideoAView mView = null;
|
|
|
|
- private VideoModel mModel = null;
|
|
|
|
- private FrameLayout mFrameController;
|
|
|
|
- private LinearLayout mPlayerController;
|
|
|
|
- private FrameLayout mOtherFrame;
|
|
|
|
- private ImageView mPlayerBack;
|
|
|
|
- private ImageView mPlayerLoading;
|
|
|
|
- public ImageView mPlayerStatus;
|
|
|
|
- private Gson mGson;
|
|
|
|
- private VideoJsonBean[] mVideoBean;
|
|
|
|
- private TextView mVideoName;
|
|
|
|
- private ImageView mLittleIcon;
|
|
|
|
- private TextView mCurrent;
|
|
|
|
- private SeekBar mSeekbar;
|
|
|
|
- private int SEEK_COUNT = 1; //用来控制长按快进的seek_progress
|
|
|
|
- final int SEEK_PROGRESS = 1000;
|
|
|
|
- final int HIDE_CONTROLLER_TIME = 5000;
|
|
|
|
- final int SET_INFO = 0x7891;
|
|
|
|
- final int SHOW_CONTROLLER = 0x7892;
|
|
|
|
- final int HIDE_CONTROLLER = 0x7893;
|
|
|
|
- final int STATUS_PLAY = 0x8891;
|
|
|
|
- final int STATUS_PAUSE = 0x8892;
|
|
|
|
- final int STATUS_FORWARD = 0x8893;
|
|
|
|
- final int STATUS_REWIND = 0x8894;
|
|
|
|
- final int SHOW_STATUS_IMAGE = 0x8895;
|
|
|
|
- final int HIDE_STATUS_IMAGE = 0x8896;
|
|
|
|
- final int PLAY_NEXT = 0x8897;
|
|
|
|
- final int DISCONNECT_NETWORK = 0x8898;
|
|
|
|
- final int CONNECT_NETWORK = 0x9989;
|
|
|
|
- final int SHOW_TOUCHVIEW = 0x8899;
|
|
|
|
- final int HIDE_TOUCHVIEW = 0x8890;
|
|
|
|
- //单独播放,播放完成直接关闭
|
|
|
|
- final int TYPE_SEPARATELY_PLAY = 0;
|
|
|
|
- //单独循环播放,一直循环
|
|
|
|
- final int TYPE_SINGLECYCLE_PLAY = 1;
|
|
|
|
- //列表播放,播放完列表关闭
|
|
|
|
- final int TYPE_LIST_PLAY = 2;
|
|
|
|
- AnimationDrawable mLoadingAnim;
|
|
|
|
- private int mStatusCode;
|
|
|
|
- Bitmap mStatusPlayBitmap;
|
|
|
|
- Bitmap mLittleIconPlayBitmap;
|
|
|
|
- Bitmap mLittleIconPauseBitmap;
|
|
|
|
- int mPlayIndex;
|
|
|
|
- int mPlayType;
|
|
|
|
- String mPlayingId;
|
|
|
|
- String mPlayNeedPost;
|
|
|
|
- int mPlayStartTime;
|
|
|
|
- String SINGLECYCLE_URL = "";
|
|
|
|
- ErrorView mErrorView;
|
|
|
|
- Dialog mErrorViewDialog;
|
|
|
|
- int mPlayerBackTime;
|
|
|
|
- String mPlayerModuleType;
|
|
|
|
- int mNetWorkErrorTime;
|
|
|
|
- boolean isPrepared = false;
|
|
|
|
- boolean isControllerShow = true;
|
|
|
|
- private GestureDetector gestureDetector;
|
|
|
|
- DeviceUtil deviceUtil;
|
|
|
|
- IndicatorSeekBar mTouchSeek;
|
|
|
|
- FrameLayout mTouchView;
|
|
|
|
- TextView mTouchText;
|
|
|
|
- ImageView mTouchIcon;
|
|
|
|
- boolean isSaveState = false;
|
|
|
|
- int oneVolume = 0;
|
|
|
|
-
|
|
|
|
- public VideoPersenter(VideoAView view) {
|
|
|
|
- mPersenter = this;
|
|
|
|
- mView = view;
|
|
|
|
- mModel = new VideoModel();
|
|
|
|
- mGson = new Gson();
|
|
|
|
- audiomanager = (AudioManager) mView.getActivity().getSystemService(Context.AUDIO_SERVICE);
|
|
|
|
- maxVolume = audiomanager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); // 获取系统最大音量
|
|
|
|
- currentVolume = audiomanager.getStreamVolume(AudioManager.STREAM_MUSIC); // 获取当前值
|
|
|
|
- oneVolume = maxVolume / 10;
|
|
|
|
- deviceUtil = new DeviceUtil();
|
|
|
|
- playerWidth = deviceUtil.getWidth(mView.getActivity());
|
|
|
|
- gestureDetector = new GestureDetector(mView.getActivity(), this);
|
|
|
|
- gestureDetector.setIsLongpressEnabled(true);
|
|
|
|
- mFrameController = (FrameLayout) LayoutInflater.from(ContextUtil.getContext()).inflate(R.layout.player_controller, null);
|
|
|
|
- mOtherFrame = mFrameController.findViewById(R.id.player_other_frame);
|
|
|
|
- mPlayerController = mFrameController.findViewById(R.id.player_controller_layout);
|
|
|
|
- mPlayerBack = mPlayerController.findViewById(R.id.player_back);
|
|
|
|
- mVideoName = mFrameController.findViewById(R.id.player_name);
|
|
|
|
- mLittleIcon = mFrameController.findViewById(R.id.player_little_icon);
|
|
|
|
- mCurrent = mFrameController.findViewById(R.id.player_current);
|
|
|
|
- mSeekbar = mFrameController.findViewById(R.id.player_seekbar);
|
|
|
|
- Drawable drawable = DrawableUtil.getNewDrawable(mView.getActivity(), R.drawable.seekbar_thumb, 36 * 2, 60 * 2);
|
|
|
|
- mSeekbar.setThumb(drawable);
|
|
|
|
- mPlayerStatus = mFrameController.findViewById(R.id.player_status);
|
|
|
|
- mPlayerLoading = mFrameController.findViewById(R.id.player_loading);
|
|
|
|
- mLoadingAnim = (AnimationDrawable) mPlayerLoading.getBackground();
|
|
|
|
- mLoadingAnim.start();
|
|
|
|
- mSeekbar.setFocusable(true);
|
|
|
|
- mStatusPlayBitmap = BitmapFactory.decodeResource(ContextUtil.getContext().getResources(), R.drawable.edufound_player_play);
|
|
|
|
- mLittleIconPlayBitmap = BitmapFactory.decodeResource(ContextUtil.getContext().getResources(), R.drawable.player_little_icon_play);
|
|
|
|
- mLittleIconPauseBitmap = BitmapFactory.decodeResource(ContextUtil.getContext().getResources(), R.drawable.player_little_icon_pause);
|
|
|
|
- mTouchView = (FrameLayout) LayoutInflater.from(mView.getActivity()).inflate(R.layout.player_touch_view, null);
|
|
|
|
- mTouchText = (TextView) mTouchView.findViewById(R.id.player_touch_text);
|
|
|
|
- mTouchIcon = (ImageView) mTouchView.findViewById(R.id.player_touch_icon);
|
|
|
|
- FrameLayout mTouchSeekFrame = (FrameLayout) mTouchView.findViewById(R.id.player_touch_seekbar_frame);
|
|
|
|
- mTouchSeek = IndicatorSeekBar
|
|
|
|
- .with(mView.getActivity())
|
|
|
|
- .max(10)
|
|
|
|
- .min(0)
|
|
|
|
- .progress(0)
|
|
|
|
- .tickCount(11)
|
|
|
|
- .showTickMarksType(TickMarkType.DIVIDER)
|
|
|
|
- .tickMarksColor(mView.getActivity().getResources().getColor(R.color.result_view))
|
|
|
|
- .tickMarksSize(10)//dp
|
|
|
|
- .tickMarksEndsHide(true)
|
|
|
|
- .trackProgressColor(mView.getActivity().getResources().getColor(R.color.white))
|
|
|
|
- .trackProgressSize(10)
|
|
|
|
- .trackBackgroundColor(mView.getActivity().getResources().getColor(R.color.gray))
|
|
|
|
- .trackBackgroundSize(10)
|
|
|
|
- .thumbSize(0)
|
|
|
|
- .build();
|
|
|
|
- FrameLayout.LayoutParams touch_seek_params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
|
|
|
- touch_seek_params.gravity = Gravity.CENTER;
|
|
|
|
- mTouchSeek.setLayoutParams(touch_seek_params);
|
|
|
|
- FrameLayout.LayoutParams touch_params = new FrameLayout.LayoutParams(deviceUtil.getWidth(mView.getActivity()) / 4, deviceUtil.getHeight(mView.getActivity()) / 3);
|
|
|
|
- touch_params.gravity = Gravity.CENTER;
|
|
|
|
- mTouchView.setLayoutParams(touch_params);
|
|
|
|
- mTouchSeekFrame.addView(mTouchSeek);
|
|
|
|
- mOtherFrame.addView(mTouchView);
|
|
|
|
- mTouchView.setVisibility(View.GONE);
|
|
|
|
- setListener();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- void setListener() {
|
|
|
|
-
|
|
|
|
- mPlayerBack.setOnClickListener(new View.OnClickListener() {
|
|
|
|
- @Override
|
|
|
|
- public void onClick(View v) {
|
|
|
|
- removeHandler();
|
|
|
|
- mView.activityFinish();
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- mLittleIcon.setOnClickListener(new View.OnClickListener() {
|
|
|
|
- @Override
|
|
|
|
- public void onClick(View v) {
|
|
|
|
- if (mView.isPlaying()) {
|
|
|
|
- mView.pause();
|
|
|
|
- checkStatus(STATUS_PLAY);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_STATUS_IMAGE);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- } else {
|
|
|
|
- mView.start();
|
|
|
|
- checkStatus(STATUS_PAUSE);
|
|
|
|
- mPlayerStatus.setVisibility(View.INVISIBLE);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
|
|
- @Override
|
|
|
|
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
|
|
- mVideoHandler.removeMessages(SET_INFO);
|
|
|
|
- mCurrent.setText(EduFoundUtil.getTime(progress) + "/" + EduFoundUtil.getTime(mView.getDuration()));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onStartTrackingTouch(SeekBar seekBar) {
|
|
|
|
- mVideoHandler.removeMessages(SHOW_CONTROLLER);
|
|
|
|
- mVideoHandler.removeMessages(HIDE_CONTROLLER);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onStopTrackingTouch(SeekBar seekBar) {
|
|
|
|
- if (seekBar.getProgress() >= mView.getDuration()) {
|
|
|
|
- playerCompletion();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- mView.seek(seekBar.getProgress());
|
|
|
|
- mCurrent.setText(EduFoundUtil.getTime(mView.getCurrent()) + "/" + EduFoundUtil.getTime(mView.getDuration()));
|
|
|
|
- mVideoHandler.sendEmptyMessage(SET_INFO);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- mPlayerStatus.setOnClickListener(new View.OnClickListener() {
|
|
|
|
- @Override
|
|
|
|
- public void onClick(View v) {
|
|
|
|
- mView.start();
|
|
|
|
- checkStatus(STATUS_PAUSE);
|
|
|
|
- mPlayerStatus.setVisibility(View.INVISIBLE);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void loadData() {
|
|
|
|
- mModel.LoadData(new BaseModel.LoadDataBack() {
|
|
|
|
- @Override
|
|
|
|
- public void success(String datajson) {
|
|
|
|
- Logger.DebugE("datajson:" + datajson);
|
|
|
|
- mView.showData(datajson);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void failure() {
|
|
|
|
- Logger.e("failure");
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onDisConnNetWork() {
|
|
|
|
-// ToastUtil.showToast("播放器界面断网了...");
|
|
|
|
- mView.stop();
|
|
|
|
- mNetWorkErrorTime = mSeekbar.getProgress();
|
|
|
|
- mVideoHandler.sendEmptyMessage(DISCONNECT_NETWORK);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onConnNetWork() {
|
|
|
|
- mVideoHandler.removeMessages(DISCONNECT_NETWORK);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void loadVideo(Intent intent) {
|
|
|
|
- try {
|
|
|
|
- String play_jsons = intent.getStringExtra("play_jsons");
|
|
|
|
- mPlayIndex = intent.getIntExtra("play_index", 0);
|
|
|
|
- mPlayType = intent.getIntExtra("play_type", 0);
|
|
|
|
- mPlayerModuleType = intent.getStringExtra("play_moduletype");
|
|
|
|
- mVideoBean = mGson.fromJson(play_jsons, VideoJsonBean[].class);
|
|
|
|
-// mVideoBean = mGson.fromJson(video_json, VideoJsonBean.class);
|
|
|
|
- mPlayingId = mVideoBean[mPlayIndex].videoid;
|
|
|
|
- mPlayNeedPost = mVideoBean[mPlayIndex].videoneedpost;
|
|
|
|
- mPlayStartTime = Integer.valueOf(mVideoBean[mPlayIndex].videoplaytime);
|
|
|
|
- if (mVideoBean[mPlayIndex].videourl == null || mVideoBean[mPlayIndex].videourl.equals("") || mVideoBean[mPlayIndex].videourl.length() == 0) {
|
|
|
|
- ToastUtil.showToast("URL是空的");
|
|
|
|
- mView.activityFinish();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-// Logger.DebugE("mVideoBean[mPlayIndex].videourl:" + mVideoBean[mPlayIndex].videourl);
|
|
|
|
- String decrypt = AesUtil.Decrypt(mVideoBean[mPlayIndex].videourl);
|
|
|
|
-// Logger.DebugE("解密:" + decrypt);
|
|
|
|
- if (mPlayType == TYPE_SINGLECYCLE_PLAY) {
|
|
|
|
- SINGLECYCLE_URL = decrypt;
|
|
|
|
- }
|
|
|
|
-// decrypt = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4";
|
|
|
|
- if (decrypt == null || !decrypt.contains("http")) {
|
|
|
|
- ToastUtil.showToast("视频格式出现问题");
|
|
|
|
-// mView.activityFinish();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- mView.setVideoUri(Uri.parse(decrypt));
|
|
|
|
- mVideoName.setText(mVideoBean[mPlayIndex].videoname);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SET_INFO);
|
|
|
|
- if (mPlayStartTime > 0) {
|
|
|
|
- mView.seek(mPlayStartTime);
|
|
|
|
- }
|
|
|
|
- mView.start();
|
|
|
|
- mVideoHandler.sendEmptyMessageDelayed(HIDE_CONTROLLER, HIDE_CONTROLLER_TIME);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onKeyDown(int keycode, KeyEvent event) {
|
|
|
|
- if (!isPrepared || (mView.getDuration() == 0) || mSeekbar.getMax() == 0) {
|
|
|
|
- if (keycode == KeyEvent.KEYCODE_BACK || keycode == KeyEvent.KEYCODE_ESCAPE) {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- switch (keycode) {
|
|
|
|
- case KeyEvent.KEYCODE_BACK:
|
|
|
|
- case KeyEvent.KEYCODE_ESCAPE:
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onKeyUp(int keycode, KeyEvent event) {
|
|
|
|
- if (!isPrepared || (mView.getDuration() == 0) || mSeekbar.getMax() == 0) {
|
|
|
|
- if (keycode == KeyEvent.KEYCODE_BACK || keycode == KeyEvent.KEYCODE_ESCAPE) {
|
|
|
|
- mView.activityFinish();
|
|
|
|
- }
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- switch (keycode) {
|
|
|
|
- case KeyEvent.KEYCODE_BACK:
|
|
|
|
- case KeyEvent.KEYCODE_ESCAPE:
|
|
|
|
- removeHandler();
|
|
|
|
- mView.activityFinish();
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void removeHandler() {
|
|
|
|
- mVideoHandler.removeMessages(SET_INFO);
|
|
|
|
- mVideoHandler.removeMessages(SHOW_CONTROLLER);
|
|
|
|
- mVideoHandler.removeMessages(HIDE_CONTROLLER);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public View getPlayerController() {
|
|
|
|
- return mFrameController;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void showController() {
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void hideController() {
|
|
|
|
- mVideoHandler.sendEmptyMessage(HIDE_CONTROLLER);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean isShowController() {
|
|
|
|
- return isControllerShow;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onCompletion() {
|
|
|
|
- playerCompletion();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onPrepared() {
|
|
|
|
- mLoadingAnim.stop();
|
|
|
|
- isPrepared = true;
|
|
|
|
- mPlayerLoading.setVisibility(View.INVISIBLE);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onInfo(int what, int extra) {
|
|
|
|
- switch (what) {
|
|
|
|
- case MediaPlayer.MEDIA_INFO_BUFFERING_START:
|
|
|
|
- mLoadingAnim.start();
|
|
|
|
- mPlayerLoading.setVisibility(View.VISIBLE);
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
- case MediaPlayer.MEDIA_INFO_BUFFERING_END:
|
|
|
|
- mLoadingAnim.stop();
|
|
|
|
- mPlayerLoading.setVisibility(View.INVISIBLE);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onError(int what, int extra) {
|
|
|
|
- switch (what) {
|
|
|
|
- case -10000:
|
|
|
|
- mVideoHandler.sendEmptyMessage(DISCONNECT_NETWORK);
|
|
|
|
- ToastUtil.showToast("网络出现异常");
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- mView.stop();
|
|
|
|
- ToastUtil.showToast("视频异常--what:" + what + "--extra:" + extra);
|
|
|
|
- mVideoHandler.postDelayed(new Runnable() {
|
|
|
|
- @Override
|
|
|
|
- public void run() {
|
|
|
|
- mView.activityFinish();
|
|
|
|
- }
|
|
|
|
- }, 2000);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void destroy() {
|
|
|
|
- NotificationWebPlayerTime();
|
|
|
|
- if (mStatusPlayBitmap != null && !mStatusPlayBitmap.isRecycled()) {
|
|
|
|
- // 回收并且置为null
|
|
|
|
- mStatusPlayBitmap.recycle();
|
|
|
|
- mLittleIconPauseBitmap.recycle();
|
|
|
|
- mLittleIconPlayBitmap.recycle();
|
|
|
|
- mStatusPlayBitmap = null;
|
|
|
|
- mLittleIconPauseBitmap = null;
|
|
|
|
- mLittleIconPlayBitmap = null;
|
|
|
|
- }
|
|
|
|
- System.gc();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onTouchEvent(MotionEvent event) {
|
|
|
|
- if (event.getAction() == MotionEvent.ACTION_UP) {
|
|
|
|
- GESTURE_FLAG = 0;// 手指离开屏幕后,重置调节音量或进度的标志
|
|
|
|
- mVideoHandler.sendEmptyMessageDelayed(HIDE_TOUCHVIEW, 3000);
|
|
|
|
- }
|
|
|
|
- return gestureDetector.onTouchEvent(event);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onSaveInstanceState(Bundle outState) {
|
|
|
|
- //保存
|
|
|
|
-// removeHandler();
|
|
|
|
- mView.pause();
|
|
|
|
- isSaveState = true;
|
|
|
|
- Logger.e("onSaveInstanceState");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onRestoreInstanceState(Bundle savedInstanceState) {
|
|
|
|
- //重新读取
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onResume() {
|
|
|
|
- if (isSaveState && (mErrorViewDialog.isShowing() == false)) {
|
|
|
|
- mView.start();
|
|
|
|
- checkStatus(STATUS_PAUSE);
|
|
|
|
- mPlayerStatus.setVisibility(View.INVISIBLE);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Handler mVideoHandler = new Handler(new Handler.Callback() {
|
|
|
|
- @Override
|
|
|
|
- public boolean handleMessage(Message msg) {
|
|
|
|
- switch (msg.what) {
|
|
|
|
- case SET_INFO:
|
|
|
|
- mPlayerBackTime = mView.getCurrent();
|
|
|
|
- mSeekbar.setProgress(mView.getCurrent());
|
|
|
|
- mSeekbar.setMax(mView.getDuration());
|
|
|
|
- mCurrent.setText(EduFoundUtil.getTime(mView.getCurrent()) + "/" + EduFoundUtil.getTime(mView.getDuration()));
|
|
|
|
- mVideoHandler.sendEmptyMessageDelayed(SET_INFO, 1000);
|
|
|
|
- break;
|
|
|
|
- case SHOW_CONTROLLER:
|
|
|
|
- isControllerShow = true;
|
|
|
|
- mVideoHandler.removeMessages(HIDE_CONTROLLER);
|
|
|
|
- mPlayerController.setVisibility(View.VISIBLE);
|
|
|
|
- mVideoHandler.sendEmptyMessageDelayed(HIDE_CONTROLLER, HIDE_CONTROLLER_TIME);
|
|
|
|
- break;
|
|
|
|
- case HIDE_CONTROLLER:
|
|
|
|
- isControllerShow = false;
|
|
|
|
- mPlayerController.setVisibility(View.INVISIBLE);
|
|
|
|
- break;
|
|
|
|
- case SHOW_STATUS_IMAGE:
|
|
|
|
- mPlayerStatus.setVisibility(View.VISIBLE);
|
|
|
|
- break;
|
|
|
|
- case HIDE_STATUS_IMAGE:
|
|
|
|
- mPlayerStatus.setVisibility(View.INVISIBLE);
|
|
|
|
- break;
|
|
|
|
- case PLAY_NEXT:
|
|
|
|
- removeHandler();
|
|
|
|
- mPlayIndex++;
|
|
|
|
- if (mPlayIndex > mVideoBean.length - 1) {
|
|
|
|
- mView.activityFinish();
|
|
|
|
- } else {
|
|
|
|
- try {
|
|
|
|
- ToastUtil.showToast("即将为您播放下一个:" + mVideoBean[mPlayIndex].videoname);
|
|
|
|
- mVideoName.setText(mVideoBean[mPlayIndex].videoname);
|
|
|
|
- mPlayingId = mVideoBean[mPlayIndex].videoid;
|
|
|
|
- mPlayNeedPost = mVideoBean[mPlayIndex].videoneedpost;
|
|
|
|
- mPlayStartTime = Integer.valueOf(mVideoBean[mPlayIndex].videoplaytime);
|
|
|
|
- if (Uri.parse(AesUtil.Decrypt(mVideoBean[mPlayIndex].videourl)) == null || Uri.parse(AesUtil.Decrypt(mVideoBean[mPlayIndex].videourl)).equals("")) {
|
|
|
|
- //可能是没权限,直接退出
|
|
|
|
- mView.activityFinish();
|
|
|
|
-// return true;
|
|
|
|
- } else {
|
|
|
|
- mVideoHandler.sendEmptyMessage(SET_INFO);
|
|
|
|
- mView.setVideoUri(Uri.parse(AesUtil.Decrypt(mVideoBean[mPlayIndex].videourl)));
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_CONTROLLER);
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_STATUS_IMAGE);
|
|
|
|
- mVideoHandler.sendEmptyMessageDelayed(HIDE_STATUS_IMAGE, 500);
|
|
|
|
- mView.start();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- mView.activityFinish();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case DISCONNECT_NETWORK:
|
|
|
|
- mVideoHandler.post(new Runnable() {
|
|
|
|
- @Override
|
|
|
|
- public void run() {
|
|
|
|
- showDisConnNeWorkWindow();
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- break;
|
|
|
|
- case CONNECT_NETWORK:
|
|
|
|
- try {
|
|
|
|
- if (mErrorViewDialog != null) {
|
|
|
|
- mErrorViewDialog.dismiss();
|
|
|
|
- }
|
|
|
|
- mView.stop();
|
|
|
|
- mView.releaseVideo();
|
|
|
|
- mView.setVideoUri(Uri.parse(AesUtil.Decrypt(mVideoBean[mPlayIndex].videourl)));
|
|
|
|
- mErrorViewDialog.dismiss();
|
|
|
|
- mView.seek(mNetWorkErrorTime);
|
|
|
|
- mView.start();
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case SHOW_TOUCHVIEW:
|
|
|
|
- mTouchView.setVisibility(View.VISIBLE);
|
|
|
|
- break;
|
|
|
|
- case HIDE_TOUCHVIEW:
|
|
|
|
- mTouchView.setVisibility(View.GONE);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * 切换status图片
|
|
|
|
- * */
|
|
|
|
- void checkStatus(final int status) {
|
|
|
|
- mLittleIcon.post(new Runnable() {
|
|
|
|
- @Override
|
|
|
|
- public void run() {
|
|
|
|
- switch (status) {
|
|
|
|
- case STATUS_PLAY:
|
|
|
|
- if (mStatusCode != STATUS_PLAY) {
|
|
|
|
- mStatusCode = STATUS_PLAY;
|
|
|
|
- mPlayerStatus.setImageBitmap(mStatusPlayBitmap);
|
|
|
|
- mLittleIcon.setImageBitmap(mLittleIconPlayBitmap);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case STATUS_PAUSE:
|
|
|
|
- if (mStatusCode != STATUS_PAUSE) {
|
|
|
|
- mStatusCode = STATUS_PAUSE;
|
|
|
|
- mLittleIcon.setImageBitmap(mLittleIconPauseBitmap);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case STATUS_FORWARD:
|
|
|
|
- if (mStatusCode != STATUS_FORWARD) {
|
|
|
|
- mStatusCode = STATUS_FORWARD;
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case STATUS_REWIND:
|
|
|
|
- if (mStatusCode != STATUS_REWIND) {
|
|
|
|
- mStatusCode = STATUS_REWIND;
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- void showDisConnNeWorkWindow() {
|
|
|
|
- if (mErrorView == null) {
|
|
|
|
- mErrorViewDialog = new Dialog(mView.getActivity());
|
|
|
|
- try {
|
|
|
|
- int dividerID = mView.getActivity().getResources().getIdentifier("android:id/titleDivider", null, null);
|
|
|
|
- View divider = mErrorViewDialog.findViewById(dividerID);
|
|
|
|
- divider.setBackgroundColor(Color.TRANSPARENT);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- //上面的代码,是用来去除Holo主题的蓝色线条
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- mErrorView = new ErrorView(mView);
|
|
|
|
- mErrorView.setBtnClickListener(new ErrorView.BtnClickListener() {
|
|
|
|
- @Override
|
|
|
|
- public void clickRelase() {
|
|
|
|
-// mView.start();
|
|
|
|
- try {
|
|
|
|
- if (ContextUtil.getNetWorkState()) {
|
|
|
|
- mView.stop();
|
|
|
|
- mView.releaseVideo();
|
|
|
|
- mView.setVideoUri(Uri.parse(AesUtil.Decrypt(mVideoBean[mPlayIndex].videourl)));
|
|
|
|
- mErrorViewDialog.dismiss();
|
|
|
|
- mView.seek(mNetWorkErrorTime);
|
|
|
|
- mView.start();
|
|
|
|
- } else {
|
|
|
|
- ToastUtil.showToast("请检查网络连接状况");
|
|
|
|
- }
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void clickExit() {
|
|
|
|
- mErrorViewDialog.dismiss();
|
|
|
|
- EApplication.clearActivity();
|
|
|
|
- Intent intent_restart = new Intent(ContextUtil.CLOSE_ACTIVITY_MAIN);
|
|
|
|
- mView.getActivity().sendBroadcast(intent_restart);
|
|
|
|
- System.exit(0);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- mErrorViewDialog.setCancelable(false);
|
|
|
|
- mErrorViewDialog.setContentView(mErrorView);
|
|
|
|
- Window dialogWindow = mErrorViewDialog.getWindow();
|
|
|
|
- dialogWindow.setGravity(Gravity.CENTER);
|
|
|
|
- dialogWindow.getDecorView().setPadding(0, 0, 0, 0);
|
|
|
|
- dialogWindow.getDecorView().setBackgroundColor(Color.parseColor("#80000000"));
|
|
|
|
- WindowManager m = mView.getActivity().getWindowManager();
|
|
|
|
- Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
|
|
|
|
- WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
|
|
|
|
- p.height = (int) (d.getHeight() * 1);
|
|
|
|
- p.width = WindowManager.LayoutParams.MATCH_PARENT;
|
|
|
|
- p.horizontalMargin = 0;
|
|
|
|
- dialogWindow.setAttributes(p);
|
|
|
|
- }
|
|
|
|
- if (!mErrorViewDialog.isShowing()) {
|
|
|
|
- mErrorViewDialog.show();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- void playerCompletion() {
|
|
|
|
- mPlayerBackTime = 0;
|
|
|
|
- switch (mPlayType) {
|
|
|
|
- case TYPE_SEPARATELY_PLAY:
|
|
|
|
- ToastUtil.showToast("播放完成");
|
|
|
|
- removeHandler();
|
|
|
|
- mView.activityFinish();
|
|
|
|
- break;
|
|
|
|
- case TYPE_SINGLECYCLE_PLAY:
|
|
|
|
- ToastUtil.showToast("重新播放");
|
|
|
|
- removeHandler();
|
|
|
|
- mVideoHandler.sendEmptyMessage(SET_INFO);
|
|
|
|
- mView.seek(0);
|
|
|
|
- mView.start();
|
|
|
|
- return;
|
|
|
|
- case TYPE_LIST_PLAY:
|
|
|
|
- NotificationWebPlayerTime();
|
|
|
|
- mVideoHandler.sendEmptyMessage(PLAY_NEXT);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- public void NotificationWebPlayerTime() {
|
|
|
|
- Intent intent = new Intent(ContextUtil.NOTIFICATION_WEB_PLAYERTIME);
|
|
|
|
- intent.putExtra("over_time", String.valueOf(mPlayerBackTime));
|
|
|
|
- intent.putExtra("over_id", String.valueOf(mPlayingId));
|
|
|
|
- intent.putExtra("over_neetpost", mPlayNeedPost);
|
|
|
|
- intent.putExtra("over_moduletype", mPlayerModuleType);
|
|
|
|
- mView.getActivity().sendBroadcast(intent);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private boolean firstScroll = false;
|
|
|
|
- private int GESTURE_FLAG = 0;// 1,调节进度,2,调节音量,3.调节亮度
|
|
|
|
- private static final int GESTURE_MODIFY_PROGRESS = 1;
|
|
|
|
- private static final int GESTURE_MODIFY_VOLUME = 2;
|
|
|
|
- private static final int GESTURE_MODIFY_BRIGHT = 3;
|
|
|
|
- private int playerWidth;
|
|
|
|
- private int maxVolume, currentVolume;
|
|
|
|
- private AudioManager audiomanager;
|
|
|
|
- private float mBrightness = -1f; // 亮度
|
|
|
|
- private static final float STEP_PROGRESS = 3f;// 设定进度滑动时的步长,避免每次滑动都改变,导致改变过快
|
|
|
|
- private static final float STEP_VOLUME = 3f;// 协调音量滑动时的步长,避免每次滑动都改变,导致改变过快
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onDown(MotionEvent e) {
|
|
|
|
- firstScroll = true;// 设定是触摸屏幕后第一次scroll的标志
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onShowPress(MotionEvent e) {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onSingleTapUp(MotionEvent e) {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
|
|
|
|
- // TODO Auto-generated method stub
|
|
|
|
- mVideoHandler.removeMessages(HIDE_TOUCHVIEW);
|
|
|
|
- float mOldX = e1.getX(), mOldY = e1.getY();
|
|
|
|
- int y = (int) e2.getRawY();
|
|
|
|
- if (firstScroll) {// 以触摸屏幕后第一次滑动为标准,避免在屏幕上操作切换混乱
|
|
|
|
- // 横向的距离变化大则调整进度,纵向的变化大则调整音量
|
|
|
|
- if (Math.abs(distanceX) >= Math.abs(distanceY)) {
|
|
|
|
- GESTURE_FLAG = GESTURE_MODIFY_PROGRESS;
|
|
|
|
- } else {
|
|
|
|
- if (mOldX > playerWidth / 2.0f) {// 音量
|
|
|
|
- GESTURE_FLAG = GESTURE_MODIFY_VOLUME;
|
|
|
|
- } else if (mOldX < playerWidth / 2.0f) {// 亮度
|
|
|
|
- GESTURE_FLAG = GESTURE_MODIFY_BRIGHT;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 如果每次触摸屏幕后第一次scroll是调节进度,那之后的scroll事件都处理音量进度,直到离开屏幕执行下一次操作
|
|
|
|
- if (GESTURE_FLAG == GESTURE_MODIFY_PROGRESS) {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- // 如果每次触摸屏幕后第一次scroll是调节音量,那之后的scroll事件都处理音量调节,直到离开屏幕执行下一次操作
|
|
|
|
- else if (GESTURE_FLAG == GESTURE_MODIFY_VOLUME) {
|
|
|
|
- currentVolume = audiomanager.getStreamVolume(AudioManager.STREAM_MUSIC); // 获取当前值
|
|
|
|
- mTouchSeek.setProgress(currentVolume);
|
|
|
|
- if (Math.abs(distanceY) > Math.abs(distanceX)) {// 纵向移动大于横向移动
|
|
|
|
- if (distanceY >= dip2px(STEP_VOLUME)) {// 音量调大,注意横屏时的坐标体系,尽管左上角是原点,但横向向上滑动时distanceY为正
|
|
|
|
- if (currentVolume < maxVolume) {// 为避免调节过快,distanceY应大于一个设定值
|
|
|
|
- currentVolume = currentVolume + oneVolume;
|
|
|
|
- }
|
|
|
|
-// gesture_iv_player_volume.setImageResource(R.drawable.souhu_player_volume);
|
|
|
|
- } else if (distanceY <= -dip2px(STEP_VOLUME)) {// 音量调小
|
|
|
|
- if (currentVolume > 0) {
|
|
|
|
- currentVolume = currentVolume - oneVolume;
|
|
|
|
- if (currentVolume == 0) {// 静音,设定静音独有的图片
|
|
|
|
-// gesture_iv_player_volume
|
|
|
|
-// .setImageResource(R.drawable.souhu_player_silence);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-// geture_tv_volume_percentage.setText(percentage + "%");
|
|
|
|
- mTouchText.setText("音量");
|
|
|
|
- mTouchIcon.setImageBitmap(BitmapFactory.decodeResource(mView.getActivity().getResources(), R.drawable.player_volume_icon));
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_TOUCHVIEW);
|
|
|
|
- mTouchSeek.setProgress((currentVolume));
|
|
|
|
- audiomanager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 如果每次触摸屏幕后第一次scroll是调节亮度,那之后的scroll事件都处理亮度调节,直到离开屏幕执行下一次操作
|
|
|
|
- else if (GESTURE_FLAG == GESTURE_MODIFY_BRIGHT) {
|
|
|
|
- Logger.e("亮度....");
|
|
|
|
- WindowManager.LayoutParams lpa = mView.getActivity().getWindow().getAttributes();
|
|
|
|
-// gesture_iv_player_bright.setImageResource(R.drawable.souhu_player_bright);
|
|
|
|
- mTouchSeek.setProgress(lpa.screenBrightness);
|
|
|
|
- if (mBrightness < 0) {
|
|
|
|
- mBrightness = mView.getActivity().getWindow().getAttributes().screenBrightness;
|
|
|
|
- if (mBrightness <= 0.00f)
|
|
|
|
- mBrightness = 0.00f;
|
|
|
|
- }
|
|
|
|
- if (Math.abs(distanceY) > Math.abs(distanceX)) {// 纵向移动大于横向移动
|
|
|
|
- if (distanceY >= dip2px(STEP_VOLUME)) {
|
|
|
|
- if (mBrightness < 1.0f) {// 为避免调节过快,distanceY应大于一个设定值
|
|
|
|
- mBrightness += 0.1f;
|
|
|
|
- }
|
|
|
|
- } else if (distanceY <= -dip2px(STEP_VOLUME)) {
|
|
|
|
- if (mBrightness > 0) {
|
|
|
|
- mBrightness -= 0.1f;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (mBrightness > 1.0f) {
|
|
|
|
- mBrightness = 1.0f;
|
|
|
|
- } else if (mBrightness < 0.01f) {
|
|
|
|
- mBrightness = 0.01f;
|
|
|
|
- }
|
|
|
|
- lpa.screenBrightness = mBrightness;
|
|
|
|
- mTouchText.setText("亮度");
|
|
|
|
- mTouchIcon.setImageBitmap(BitmapFactory.decodeResource(mView.getActivity().getResources(), R.drawable.player_brightness_icon));
|
|
|
|
- mVideoHandler.sendEmptyMessage(SHOW_TOUCHVIEW);
|
|
|
|
- mTouchSeek.setProgress((mBrightness * 10));
|
|
|
|
- mView.getActivity().getWindow().setAttributes(lpa);
|
|
|
|
-// geture_tv_bright_percentage.setText((int) (lpa.screenBrightness * 100) + "%");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- firstScroll = false;// 第一次scroll执行完成,修改标志
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public int dip2px(float dpValue) {
|
|
|
|
- final float scale = mView.getActivity().getResources().getDisplayMetrics().density;
|
|
|
|
- return (int) (dpValue * scale + 0.5f);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void onLongPress(MotionEvent e) {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onSingleTapConfirmed(MotionEvent e) {
|
|
|
|
- Logger.e("onSingleTapConfirmed");
|
|
|
|
- if (mPersenter.isShowController()) {
|
|
|
|
- mPersenter.hideController();
|
|
|
|
- } else {
|
|
|
|
- mPersenter.showController();
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onDoubleTap(MotionEvent e) {
|
|
|
|
- Logger.e("onDoubleTap");
|
|
|
|
- if (mView.isPlaying()) {
|
|
|
|
- mView.pause();
|
|
|
|
- mPersenter.checkStatus(mPersenter.STATUS_PLAY);
|
|
|
|
- mPersenter.mVideoHandler.sendEmptyMessage(mPersenter.SHOW_STATUS_IMAGE);
|
|
|
|
- mPersenter.mVideoHandler.sendEmptyMessage(mPersenter.SHOW_CONTROLLER);
|
|
|
|
- } else {
|
|
|
|
- mView.start();
|
|
|
|
- mPersenter.checkStatus(mPersenter.STATUS_PAUSE);
|
|
|
|
- mPersenter.mPlayerStatus.setVisibility(View.INVISIBLE);
|
|
|
|
- mPersenter.mVideoHandler.sendEmptyMessage(mPersenter.SHOW_CONTROLLER);
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean onDoubleTapEvent(MotionEvent e) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public class VideoJsonBean {
|
|
|
|
- public String videourl;
|
|
|
|
- public String videoname;
|
|
|
|
- public String videoid;
|
|
|
|
- public String videoplaytime;
|
|
|
|
- public String videoneedpost;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-interface VideoIPersenter extends BasePersenter {
|
|
|
|
- void loadVideo(Intent intent);
|
|
|
|
-
|
|
|
|
- boolean onKeyDown(int keycode, KeyEvent event);
|
|
|
|
-
|
|
|
|
- boolean onKeyUp(int keycode, KeyEvent event);
|
|
|
|
-
|
|
|
|
- void removeHandler();
|
|
|
|
-
|
|
|
|
- View getPlayerController();
|
|
|
|
-
|
|
|
|
- void showController();
|
|
|
|
-
|
|
|
|
- void hideController();
|
|
|
|
-
|
|
|
|
- boolean isShowController();
|
|
|
|
-
|
|
|
|
- void onCompletion();
|
|
|
|
-
|
|
|
|
- void onPrepared();
|
|
|
|
-
|
|
|
|
- void onInfo(int what, int extra);
|
|
|
|
-
|
|
|
|
- boolean onError(int what, int extra);
|
|
|
|
-
|
|
|
|
- void destroy();
|
|
|
|
-
|
|
|
|
- boolean onTouchEvent(MotionEvent event);
|
|
|
|
-
|
|
|
|
- void onSaveInstanceState(Bundle outState);
|
|
|
|
-
|
|
|
|
- void onRestoreInstanceState(Bundle savedInstanceState);
|
|
|
|
-
|
|
|
|
- void onResume();
|
|
|
|
-
|
|
|
|
-}
|
|
|
|
-
|
|
|