Here are the examples of the java api android.widget.VideoView taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
121 Examples
19
Source : Activity_VideoSurveillance.java
with Apache License 2.0
from yangxch
with Apache License 2.0
from yangxch
public clreplaced Activity_VideoSurveillance extends BaseActivity {
private VideoView videoViewVideo;
private ProgressDialog pg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_surveillance);
initView();
}
private void initView() {
pg = new ProgressDialog(Activity_VideoSurveillance.this);
pg.setMessage("缓冲中...");
pg.show();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setreplacedle("");
TextView toolbarText = (TextView) findViewById(R.id.toolbar_text);
toolbarText.setText("视频监控");
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
if (!Util.checkNetwork(this)) {
return;
}
videoViewVideo = (VideoView) findViewById(R.id.videoViewVideo);
try {
// 设置视频控制器
MediaController mediacontroller = new MediaController(Activity_VideoSurveillance.this);
mediacontroller.setAnchorView(videoViewVideo);
videoViewVideo.setMediaController(mediacontroller);
// 视频来源
videoViewVideo.setVideoURI(Uri.parse("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"));
} catch (Exception e) {
e.printStackTrace();
pg.dismiss();
}
videoViewVideo.requestFocus();
videoViewVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
pg.dismiss();
// 开始播放视频
videoViewVideo.start();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.gereplacedemId()) {
case android.R.id.home:
finish();
break;
default:
break;
}
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
19
Source : VideoViewSeekBar.java
with Apache License 2.0
from yangwencan2002
with Apache License 2.0
from yangwencan2002
/**
* 视频进度和拖拽条
*
* @author vincanyang
*/
public clreplaced VideoViewSeekBar extends android.support.v7.widget.AppCompatSeekBar {
private VideoView mVideoView;
private final VideoProgressUpdateHandler mVideoProgressUpdateHandler = new VideoProgressUpdateHandler();
private int mVideoCurrentPosition;
public VideoViewSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
setMax(100);
setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (mVideoView != null) {
int offset = mVideoView.getDuration() * getProgress() / getMax();
mVideoView.seekTo(offset);
}
}
});
}
public void setVideoView(VideoView videoView) {
mVideoView = videoView;
}
public void start() {
mVideoView.seekTo(mVideoCurrentPosition);
mVideoView.start();
mVideoProgressUpdateHandler.start();
}
public void stop() {
mVideoCurrentPosition = mVideoView.getCurrentPosition();
mVideoView.pause();
mVideoProgressUpdateHandler.stop();
}
private final clreplaced VideoProgressUpdateHandler extends Handler {
private int WHAT = 0;
public void start() {
sendEmptyMessage(WHAT);
}
public void stop() {
removeMessages(WHAT);
}
@Override
public void handleMessage(Message msg) {
if (mVideoView != null) {
int playProgress = mVideoView.getCurrentPosition() * getMax() / mVideoView.getDuration();
setProgress(playProgress);
sendEmptyMessageDelayed(0, 500);
}
}
}
}
19
Source : VideoViewSeekBar.java
with Apache License 2.0
from yangwencan2002
with Apache License 2.0
from yangwencan2002
public void setVideoView(VideoView videoView) {
mVideoView = videoView;
}
19
Source : GPVideoPlayerActivity.java
with Apache License 2.0
from yangchaojiang
with Apache License 2.0
from yangchaojiang
public clreplaced GPVideoPlayerActivity extends Activity {
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gpvideoplayer);
videoView = findViewById(R.id.gpVideo);
videoView.setVideoPath(getIntent().getStringExtra("url"));
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Toast.makeText(GPVideoPlayerActivity.this, R.string.Playback_failed, Toast.LENGTH_SHORT).show();
return false;
}
});
videoView.start();
}
@Override
protected void onResume() {
super.onResume();
if (!videoView.isPlaying()) {
videoView.start();
}
}
@Override
protected void onPause() {
super.onPause();
videoView.pause();
}
@Override
protected void onDestroy() {
super.onDestroy();
videoView.stopPlayback();
}
/**
* 启动播放视频
* @param context context
* @param url url
* **
*/
public static void startActivity(Context context, String url) {
Intent intent = new Intent(context, GPVideoPlayerActivity.clreplaced);
intent.putExtra("url", url);
context.startActivity(intent);
}
}
19
Source : VideoPlayerActivity.java
with Apache License 2.0
from xuexiangjys
with Apache License 2.0
from xuexiangjys
/**
* 视频播放界面
*
* @author xuexiang
* @since 2018/12/5 上午11:49
*/
public clreplaced VideoPlayerActivity extends AppCompatActivity {
public static final String KEY_URL = "com.xuexiang.xui.widget.preview.KEY_URL";
private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.preview_activity_video_player);
mVideoView = findViewById(R.id.video);
String videoPath = getIntent().getStringExtra(KEY_URL);
if (TextUtils.isEmpty(videoPath)) {
Toast.makeText(VideoPlayerActivity.this, R.string.xui_preview_video_path_error, Toast.LENGTH_SHORT).show();
finish();
return;
}
mVideoView.setVideoPath(videoPath);
mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Toast.makeText(VideoPlayerActivity.this, R.string.xui_preview_play_failed, Toast.LENGTH_SHORT).show();
return false;
}
});
mVideoView.start();
findViewById(R.id.rl_root).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
recycle();
}
});
}
private void recycle() {
if (mVideoView != null) {
mVideoView.stopPlayback();
}
}
@Override
protected void onResume() {
super.onResume();
if (mVideoView != null && !mVideoView.isPlaying()) {
mVideoView.start();
}
}
@Override
protected void onPause() {
super.onPause();
if (mVideoView != null) {
mVideoView.pause();
}
}
@Override
protected void onStop() {
if (isFinishing()) {
recycle();
}
super.onStop();
}
/**
* 启动播放视频
* @param fragment context
* @param url url
*/
public static void start(Fragment fragment, String url) {
Intent intent = new Intent(fragment.getContext(), VideoPlayerActivity.clreplaced);
intent.putExtra(KEY_URL, url);
fragment.startActivity(intent);
}
}
19
Source : RTSPlayerActivity.java
with MIT License
from wossoneri
with MIT License
from wossoneri
public clreplaced RTSPlayerActivity extends AppCompatActivity {
@BindView(R.id.videoView)
VideoView mVideoView;
private String mURL = "rtsp://118.25.39.144/sample_h264_1mbit.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rtsplayer);
ButterKnife.bind(this);
mVideoView.setVideoPath(mURL);
mVideoView.requestFocus();
mVideoView.start();
}
}
19
Source : AboutActivity.java
with GNU General Public License v3.0
from victordiaz
with GNU General Public License v3.0
from victordiaz
public clreplaced AboutActivity extends BaseActivity {
private static final String TAG = AboutActivity.clreplaced.getSimpleName();
private VideoView videoView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
setupActivity();
ImageButton btnPatreon = findViewById(R.id.btnPatreon);
ImageButton btnBuyMeACoffee = findViewById(R.id.btnBuyMeACoffee);
btnPatreon.setOnClickListener(view -> openLink("https://www.patreon.com/victornomad"));
btnBuyMeACoffee.setOnClickListener(view -> openLink("https://www.buymeacoffee.com/victordiaz"));
TextView phonkVersionName = findViewById(R.id.versionName);
phonkVersionName.setText(BuildConfig.VERSION_NAME);
videoView = findViewById(R.id.videoView);
String videoURI = "android.resource://" + getPackageName() + "/" + R.raw.phonk;
videoView.setVideoURI(Uri.parse(videoURI));
// videoView.setBackgroundColor(Color.WHITE);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setLooping(true);
videoView.setBackgroundColor(Color.TRANSPARENT);
// videoView.setZOrderOnTop(true);
}
});
videoView.start();
}
private void openLink(String url) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
@Override
protected void setupActivity() {
super.setupActivity();
enableBackOnToolbar();
}
@Override
protected void onResume() {
super.onResume();
videoView.start();
}
}
19
Source : VideoActivity.java
with Apache License 2.0
from tangpeng
with Apache License 2.0
from tangpeng
public clreplaced VideoActivity extends AppCompatActivity {
private VideoView vvVideo;
String geturl = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
vvVideo = (VideoView) findViewById(R.id.vvVideo);
geturl = getIntent().getStringExtra("vvVideo");
vvVideo.setVideoPath(geturl);
vvVideo.start();
}
}
19
Source : PhotoVideoRedirectActivity.java
with MIT License
from spaceoamit
with MIT License
from spaceoamit
/**
* Created by sotsys016-2 on 13/8/16 in com.cnc3camera.
*/
public clreplaced PhotoVideoRedirectActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photovideo_redirect);
init();
}
VideoView videoView;
private void init() {
ImageView imgShow = (ImageView) findViewById(R.id.imgShow);
videoView = (VideoView) findViewById(R.id.vidShow);
if (getIntent().getStringExtra("WHO").equalsIgnoreCase("Image")) {
imgShow.setVisibility(View.VISIBLE);
Glide.with(PhotoVideoRedirectActivity.this).load(getIntent().getStringExtra("PATH")).listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
}).placeholder(R.drawable.ic_photo_cont).into(imgShow);
} else {
videoView.setVisibility(View.VISIBLE);
try {
videoView.setMediaController(null);
videoView.setVideoURI(Uri.parse(getIntent().getStringExtra("PATH")));
} catch (Exception e) {
e.printStackTrace();
}
videoView.requestFocus();
// videoView.setZOrderOnTop(true);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
videoView.start();
}
});
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoView.start();
}
});
}
}
@Override
public void onBackPressed() {
if (videoView.isPlaying()) {
videoView.pause();
}
super.onBackPressed();
}
}
19
Source : PageVideoViewer.java
with Apache License 2.0
from MobClub
with Apache License 2.0
from MobClub
/**
* 打开视频文件
*/
public clreplaced PageVideoViewer extends PageAttachmentViewer {
private VideoView videoView;
protected View initViewerContentView(Context context) {
RelativeLayout rl = new RelativeLayout(context);
videoView = new VideoView(context);
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
rlp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
rl.addView(videoView, rlp);
return rl;
}
protected void loadContent(String filePath, String extension, LoadContentListener loadContentListener) {
// 显示使用其它应用打开的入口,并使用videoView打开
try {
Uri uri = Uri.fromFile(new File(filePath));
videoView.setMediaController(new MediaController(getContext()));
videoView.setVideoURI(uri);
videoView.requestFocus();
loadContentListener.onLoadFinished(true);
} catch (Throwable t) {
loadContentListener.onLoadFinished(false);
}
}
public void onResume() {
super.onResume();
}
public void onPause() {
try {
if (videoView != null && videoView.isPlaying()) {
videoView.pause();
}
} catch (Throwable t) {
t.printStackTrace();
}
super.onPause();
}
public void onDestroy() {
if (videoView != null) {
try {
videoView.stopPlayback();
} catch (Throwable t) {
t.printStackTrace();
}
videoView = null;
}
super.onDestroy();
}
}
19
Source : VideoActivity.java
with MIT License
from maxiaozhou1234
with MIT License
from maxiaozhou1234
/**
* Created by ZhOu on 2018/4/18.
*/
public clreplaced VideoActivity extends BaseActivity {
private VideoView videoView;
private boolean stop = false;
@Override
protected void setContentView() {
setContentView(R.layout.activity_video);
}
@Override
protected void init() {
videoView = (VideoView) findViewById(R.id.videoView);
String path = Environment.getExternalStorageDirectory() + "/Pictures/test.mp4";
File file = new File(path);
if (!file.exists()) {
path = "android.resource://" + getPackageName() + "/" + R.raw.test_2;
}
videoView.setVideoURI(Uri.parse(path));
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setVolume(0f, 0f);
}
});
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (stop)
return;
videoView.start();
}
});
videoView.start();
}
@Override
protected void addListener() {
}
@Override
public void back() {
if (videoView != null) {
stop = true;
try {
videoView.stopPlayback();
videoView = null;
} catch (Exception e) {
e.printStackTrace();
}
}
super.back();
}
}
19
Source : JavaVideoActivity.java
with MIT License
from LeslieCorrea
with MIT License
from LeslieCorrea
public clreplaced JavaVideoActivity extends AppCompatActivity {
VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_java_video);
mVideoView = (VideoView) this.findViewById(R.id.SampleVideoView);
MediaController mediaController = new MediaController(this);
mVideoView.setMediaController(mediaController);
mVideoView.setVideoPath("content://com.example.lesliecorrea.videoapp/big_buck_bunny.mp4");
mVideoView.start();
}
}
19
Source : VideoActivity.java
with MIT License
from jpush
with MIT License
from jpush
public clreplaced VideoActivity extends Activity {
public static final String VIDEO_PATH = "VIDEO_PATH";
private VideoView mVideoView;
private int mSavedCurrentPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
String videoPath = getIntent().getStringExtra(VIDEO_PATH);
mVideoView = (VideoView) findViewById(R.id.videoview_video);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(mVideoView);
mVideoView.setMediaController(mediaController);
mVideoView.setVideoPath(videoPath);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mVideoView.requestLayout();
if (mSavedCurrentPosition != 0) {
mVideoView.seekTo(mSavedCurrentPosition);
mSavedCurrentPosition = 0;
} else {
play();
}
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mVideoView.setKeepScreenOn(false);
}
});
}
@Override
protected void onResume() {
super.onResume();
mVideoView.resume();
}
@Override
protected void onPause() {
super.onPause();
mSavedCurrentPosition = mVideoView.getCurrentPosition();
mVideoView.pause();
}
@Override
protected void onStop() {
super.onStop();
pause();
}
private void play() {
mVideoView.start();
mVideoView.setKeepScreenOn(true);
}
private void pause() {
mVideoView.pause();
mVideoView.setKeepScreenOn(false);
}
}
19
Source : PlayerActivity.java
with Apache License 2.0
from jmrobles
with Apache License 2.0
from jmrobles
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
*/
public clreplaced PlayerActivity extends AppCompatActivity {
private String url;
private String label;
private VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
videoView = (VideoView) findViewById(R.id.videoView);
Intent i = getIntent();
Bundle extras = i.getExtras();
if (extras.getString(Constants.LABEL) != null && extras.getString(Constants.URL) != null) {
url = extras.getString(Constants.URL);
label = extras.getString(Constants.LABEL);
play(label, url);
}
}
private void play(String label, String url) {
setreplacedle(label);
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int what, int extra) {
Toast.makeText(PlayerActivity.this, "Error: " + what + " - extra: " + extra, Toast.LENGTH_LONG).show();
return false;
}
});
// MediaController mc = new MediaController(this);
videoView.setVideoURI(Uri.parse(url));
// videoView.setMediaController(mc);
videoView.requestFocus();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
// videoView.start();
}
}
19
Source : VideoViewDemo.java
with Apache License 2.0
from jiyouliang
with Apache License 2.0
from jiyouliang
public clreplaced VideoViewDemo extends Activity {
private VideoView mVideoView;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.videoview);
mVideoView = (VideoView) findViewById(R.id.surface_view);
initPlayer(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videoviewdemo));
mVideoView.setOnDragListener(mDragListener);
}
private void initPlayer(Uri uri) {
mVideoView.setVideoURI(uri);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
}
private View.OnDragListener mDragListener = new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
if (event.getAction() != DragEvent.ACTION_DROP) {
return true;
}
ClipData clipData = event.getClipData();
if (clipData.gereplacedemCount() != 1) {
return false;
}
ClipData.Item item = clipData.gereplacedemAt(0);
Uri uri = item.getUri();
if (uri == null) {
return false;
}
if (requestDragAndDropPermissions(event) == null) {
return false;
}
initPlayer(uri);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mediaPlayer) {
mVideoView.start();
}
});
return true;
}
};
}
19
Source : PageTrim.java
with Apache License 2.0
from JessYanCoding
with Apache License 2.0
from JessYanCoding
public void playVideo(boolean isPlay, VideoView videoView) {
if (mContainer != null) {
mContainer.playVideo(isPlay, videoView);
}
}
19
Source : VideoPlayerActivity.java
with GNU General Public License v3.0
from bidmachine
with GNU General Public License v3.0
from bidmachine
public clreplaced VideoPlayerActivity extends Activity implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener, MediaPlayer.OnPreparedListener {
private final static String FILE_URI = "io.bidmachine.fileUri";
private final static String SEEK_TO = "io.bidmachine.seekTo";
private int seekTo;
private VideoView videoView;
private VideoPlayerActivityListener listener;
interface VideoPlayerActivityListener {
void videoPlayerActivityClosed(int position, boolean finished);
}
public static Intent getIntent(Context packageContext, String fileUri, int seekTo) {
Intent intent = new Intent(packageContext, VideoPlayerActivity.clreplaced);
intent.putExtra(FILE_URI, fileUri);
intent.putExtra(SEEK_TO, seekTo);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Intent intent = getIntent();
String fileUri = intent.getStringExtra(FILE_URI);
seekTo = intent.getIntExtra(SEEK_TO, 0);
Logger.log(String.format("VideoPlayerActivity started, position: %s", seekTo));
if (fileUri == null) {
return;
}
listener = MediaView.listener;
RelativeLayout rootLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams rootViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
rootLayout.setLayoutParams(rootViewParams);
videoView = new VideoView(this);
RelativeLayout.LayoutParams videoViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
videoViewParams.addRule(RelativeLayout.CENTER_IN_PARENT);
videoView.setLayoutParams(videoViewParams);
videoView.setOnCompletionListener(this);
videoView.setOnPreparedListener(this);
videoView.setVideoPath(fileUri);
rootLayout.addView(videoView);
CircleCountdownView closeButton = new CircleCountdownView(this, replacedets.mainreplacedetsColor, replacedets.backgroundColor);
int closeButtonSize = Math.round(50 * getScreenDensity(this));
RelativeLayout.LayoutParams closeButtonParams = new RelativeLayout.LayoutParams(closeButtonSize, closeButtonSize);
closeButtonParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
closeButtonParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
closeButton.setImage(replacedets.getBitmapFromBase64(replacedets.close));
closeButton.setLayoutParams(closeButtonParams);
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeClicked();
}
});
rootLayout.addView(closeButton);
setContentView(rootLayout);
}
private void finishActivity() {
runOnUiThread(new Runnable() {
public void run() {
try {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} catch (Exception e) {
Logger.log(e);
}
}
});
finish();
}
@Override
public void onCompletion(MediaPlayer mp) {
if (listener != null) {
listener.videoPlayerActivityClosed(0, true);
}
this.finishActivity();
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
this.finishActivity();
return false;
}
@Override
public void onPrepared(MediaPlayer mp) {
if (videoView != null && videoView.canSeekForward()) {
videoView.seekTo(seekTo);
videoView.start();
}
}
@Override
public void onBackPressed() {
closeClicked();
}
private void closeClicked() {
if (listener != null) {
int currentPosition = 0;
if (videoView.isPlaying()) {
currentPosition = videoView.getCurrentPosition();
}
listener.videoPlayerActivityClosed(currentPosition, false);
}
finishActivity();
}
}
19
Source : VideoActivity.java
with MIT License
from AnyPeer
with MIT License
from AnyPeer
public clreplaced VideoActivity extends AppCompatActivity {
public static final String PATH = "path";
private VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
findViewById(R.id.icon_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
videoView = findViewById(R.id.video);
videoView.setVideoURI(Uri.parse(getIntent().getStringExtra(PATH)));
videoView.start();
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoView.start();
}
});
}
}
18
Source : VideoViewContainerHelper.java
with Apache License 2.0
from zhouhuandev
with Apache License 2.0
from zhouhuandev
/**
* Time: 2019/9/30 9:45
* Author:ypx
* Description: 视频播放
*/
public clreplaced VideoViewContainerHelper {
private VideoView videoView;
private ImageView previewImg;
private ImageView pauseImg;
public void loadVideoView(ViewGroup parent, ImageItem imageItem, IPickerPresenter presenter, PickerUiConfig uiConfig) {
Context context = parent.getContext();
if (videoView == null) {
videoView = new VideoView(context);
videoView.setBackgroundColor(Color.TRANSPARENT);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER;
videoView.setLayoutParams(params);
previewImg = new ImageView(context);
previewImg.setLayoutParams(params);
previewImg.setScaleType(ImageView.ScaleType.FIT_CENTER);
pauseImg = new ImageView(context);
pauseImg.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
pauseImg.setImageDrawable(context.getResources().getDrawable(uiConfig.getVideoPauseIconID()));
FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params2.gravity = Gravity.CENTER;
pauseImg.setLayoutParams(params2);
}
pauseImg.setVisibility(View.GONE);
parent.removeAllViews();
parent.addView(videoView);
parent.addView(previewImg);
parent.addView(pauseImg);
previewImg.setVisibility(View.VISIBLE);
presenter.displayImage(previewImg, imageItem, 0, false);
videoView.setVideoPath(imageItem.path);
videoView.start();
// 监听视频播放完的代码
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mPlayer) {
mPlayer.start();
mPlayer.setLooping(true);
}
});
videoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (videoView.isPlaying()) {
onPause();
} else {
onResume();
}
}
});
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
videoView.start();
}
});
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// video 视屏播放的时候把背景设置为透明
videoView.setBackgroundColor(Color.TRANSPARENT);
previewImg.setVisibility(View.GONE);
return true;
}
return false;
}
});
}
});
}
public void onResume() {
if (videoView != null && pauseImg != null) {
videoView.start();
videoView.seekTo(videoView.getCurrentPosition());
pauseImg.setVisibility(View.GONE);
}
}
public void onPause() {
if (videoView != null && pauseImg != null) {
videoView.pause();
pauseImg.setVisibility(View.VISIBLE);
}
}
public void onDestroy() {
if (videoView != null) {
// 将VideoView所占用的资源释放掉
videoView.suspend();
}
}
}
18
Source : PreviewActivity.java
with Apache License 2.0
from yellowcath
with Apache License 2.0
from yellowcath
/**
* Created by Bhuvnesh on 08-03-2017.
*/
public clreplaced PreviewActivity extends AppCompatActivity {
private VideoView videoView;
private SeekBar seekBar;
private int stopPosition;
static final String KEY_URI = "uri";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
videoView = (VideoView) findViewById(R.id.videoView);
seekBar = (SeekBar) findViewById(R.id.seekBar);
TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
Uri uri = getIntent().getParcelableExtra(KEY_URI);
String videoInfo = "";
try {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(this, uri);
int bitrate = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
retriever.release();
MediaExtractor extractor = new MediaExtractor();
extractor.setDataSource(this, uri, null);
MediaFormat format = extractor.getTrackFormat(VideoUtil.selectTrack(extractor, false));
int frameRate = format.containsKey(MediaFormat.KEY_FRAME_RATE) ? format.getInteger(MediaFormat.KEY_FRAME_RATE) : -1;
float aveFrameRate = VideoUtil.getAveFrameRate(new VideoProcessor.MediaSource(this, uri));
int width = format.getInteger(MediaFormat.KEY_WIDTH);
int height = format.getInteger(MediaFormat.KEY_HEIGHT);
int rotation = format.containsKey(MediaFormat.KEY_ROTATION) ? format.getInteger(MediaFormat.KEY_ROTATION) : -1;
long duration = format.containsKey(MediaFormat.KEY_DURATION) ? format.getLong(MediaFormat.KEY_DURATION) : -1;
videoInfo = String.format(Locale.ENGLISH, "size:%dX%d,framerate:%d,aveFrameRate:%f,rotation:%d,bitrate:%d,duration:%.1fs", width, height, frameRate, aveFrameRate, rotation, bitrate, duration / 1000f / 1000f);
extractor.release();
} catch (Exception e) {
e.printStackTrace();
}
tvInstruction.setText(String.format(Locale.ENGLISH, "Video stored at \nUri %s\nPath:%s\n%s", uri, PathUtil.getPath(this, uri), videoInfo));
videoView.setVideoURI(uri);
videoView.start();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
// this is when actually seekbar has been seeked to a new position
videoView.seekTo(progress);
}
}
});
}
@Override
protected void onPause() {
super.onPause();
// stopPosition is an int
stopPosition = videoView.getCurrentPosition();
videoView.pause();
}
@Override
protected void onResume() {
super.onResume();
videoView.seekTo(stopPosition);
videoView.start();
}
private Runnable onEverySecond = new Runnable() {
@Override
public void run() {
if (seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if (videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle arrow click here
if (item.gereplacedemId() == android.R.id.home) {
// close this activity and return to preview activity (if there is any)
finish();
}
return super.onOptionsItemSelected(item);
}
}
18
Source : VideoPagerFragment.java
with Apache License 2.0
from yangwencan2002
with Apache License 2.0
from yangwencan2002
/**
* 用于ViewPager的VideoFragment
*
* @author vincanyang
*/
public clreplaced VideoPagerFragment extends Fragment implements DownloadListener {
private static final String TAG = VideoPagerFragment.clreplaced.getSimpleName();
private static final String BUNDLE_KEY_URL = "url";
private VideoView mVideoView;
private VideoViewSeekBar mVideoViewSeekBar;
private String mUrl;
private boolean mIsVisibleForUser;
private MediaLoader mMediaLoader;
public static Fragment getInstance(String url) {
VideoPagerFragment fragment = new VideoPagerFragment();
Bundle args = new Bundle();
args.putString(BUNDLE_KEY_URL, url);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_media, container, false);
mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
mVideoViewSeekBar = (VideoViewSeekBar) rootView.findViewById(R.id.mediaSeekBar);
mVideoViewSeekBar.setVideoView(mVideoView);
mUrl = getArguments().getString(BUNDLE_KEY_URL);
mMediaLoader = MediaLoader.getInstance(getContext());
mMediaLoader.addDownloadListener(mUrl, this);
boolean isCached = mMediaLoader.isCached(mUrl);
if (isCached) {
mVideoViewSeekBar.setSecondaryProgress(mVideoViewSeekBar.getMax());
}
mVideoView.setVideoPath(mMediaLoader.getProxyUrl(mUrl));
return rootView;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
mIsVisibleForUser = isVisibleToUser;
if (mIsVisibleForUser) {
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.start();
}
} else {
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.stop();
}
}
}
@Override
public void onResume() {
super.onResume();
if (mVideoViewSeekBar != null) {
if (mIsVisibleForUser) {
mVideoViewSeekBar.start();
}
}
}
@Override
public void onPause() {
super.onPause();
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.stop();
}
}
@Override
public void onDestroy() {
super.onDestroy();
mVideoView.stopPlayback();
mMediaLoader.removeDownloadListener(mUrl, this);
}
@Override
public void onProgress(String url, File file, int progress) {
mVideoViewSeekBar.setSecondaryProgress(progress);
Log.e(TAG, "Url " + url + " download progress:" + progress);
}
@Override
public void onError(Throwable e) {
}
}
18
Source : VideoLazyLoadFragment.java
with Apache License 2.0
from yangwencan2002
with Apache License 2.0
from yangwencan2002
/**
* 播放音视频的懒加载Fragment
*
* @author vincanyang
*/
public clreplaced VideoLazyLoadFragment extends BaseLazyLoadFragment implements DownloadListener {
private static final String TAG = VideoLazyLoadFragment.clreplaced.getSimpleName();
private static final String BUNDLE_KEY_URL = "url";
private VideoView mVideoView;
private VideoViewSeekBar mVideoViewSeekBar;
private MediaLoader mMediaLoader;
private String mUrl;
private boolean mIsVideoPathSet;
public static Fragment getInstance(String url) {
VideoLazyLoadFragment fragment = new VideoLazyLoadFragment();
Bundle args = new Bundle();
args.putString(BUNDLE_KEY_URL, url);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_media, container, false);
mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
mVideoViewSeekBar = (VideoViewSeekBar) rootView.findViewById(R.id.mediaSeekBar);
mVideoViewSeekBar.setVideoView(mVideoView);
mUrl = getArguments().getString(BUNDLE_KEY_URL);
mMediaLoader = MediaLoader.getInstance(getContext());
mMediaLoader.addDownloadListener(mUrl, this);
boolean isCached = mMediaLoader.isCached(mUrl);
if (isCached) {
mVideoViewSeekBar.setSecondaryProgress(mVideoViewSeekBar.getMax());
}
return rootView;
}
@Override
protected void onFragmentVisible() {
super.onFragmentVisible();
if (!mIsVideoPathSet) {
String proxyUrl = mMediaLoader.getProxyUrl(mUrl);
Log.e(TAG, "Use new proxy mUrl " + proxyUrl + " instead of old mUrl " + mUrl);
// 该方法调用后会发起视频下载请求
mVideoView.setVideoPath(proxyUrl);
mIsVideoPathSet = true;
}
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.start();
}
}
@Override
protected void onFragmentInVisible() {
super.onFragmentInVisible();
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.stop();
}
}
@Override
public void onDestroy() {
super.onDestroy();
mVideoView.stopPlayback();
mMediaLoader.removeDownloadListener(mUrl, this);
}
@Override
public void onProgress(String url, File file, int progress) {
mVideoViewSeekBar.setSecondaryProgress(progress);
Log.e(TAG, "Url " + url + " download progress:" + progress);
}
@Override
public void onError(Throwable e) {
}
}
18
Source : MediaFragment.java
with Apache License 2.0
from yangwencan2002
with Apache License 2.0
from yangwencan2002
/**
* 播放音视频的Fragment,带有进度条
*
* @author vincanyang
*/
public clreplaced MediaFragment extends Fragment implements DownloadListener {
private static final String TAG = MediaFragment.clreplaced.getSimpleName();
private static final String BUNDLE_KEY_URL = "url";
private VideoView mVideoView;
private VideoViewSeekBar mVideoViewSeekBar;
private String mUrl;
private MediaLoader mMediaLoader;
public static Fragment getInstance(String url) {
MediaFragment fragment = new MediaFragment();
Bundle args = new Bundle();
args.putString(BUNDLE_KEY_URL, url);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_media, container, false);
mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
mVideoViewSeekBar = (VideoViewSeekBar) rootView.findViewById(R.id.mediaSeekBar);
mVideoViewSeekBar.setVideoView(mVideoView);
mUrl = getArguments().getString(BUNDLE_KEY_URL);
mMediaLoader = MediaLoader.getInstance(getContext());
mMediaLoader.addDownloadListener(mUrl, this);
boolean isCached = mMediaLoader.isCached(mUrl);
if (isCached) {
mVideoViewSeekBar.setSecondaryProgress(mVideoViewSeekBar.getMax());
}
mVideoView.setVideoPath(mMediaLoader.getProxyUrl(mUrl));
mVideoViewSeekBar.start();
return rootView;
}
@Override
public void onResume() {
super.onResume();
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.start();
}
}
@Override
public void onPause() {
super.onPause();
if (mVideoViewSeekBar != null) {
mVideoViewSeekBar.stop();
}
}
@Override
public void onDestroy() {
super.onDestroy();
mVideoView.stopPlayback();
mMediaLoader.removeDownloadListener(mUrl, this);
}
@Override
public void onProgress(String url, File file, int progress) {
mVideoViewSeekBar.setSecondaryProgress(progress);
Log.e(TAG, "Url " + url + " download progress:" + progress);
}
@Override
public void onError(Throwable e) {
}
}
18
Source : VideoPlayActivity.java
with Apache License 2.0
from SingleShu
with Apache License 2.0
from SingleShu
public clreplaced VideoPlayActivity extends AppCompatActivity {
TextView libPlayVideo_tv_replacedle;
VideoView videoView;
private boolean isFirst = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_play);
libPlayVideo_tv_replacedle = (TextView) findViewById(R.id.libPlayVideo_tv_replacedle);
libPlayVideo_tv_replacedle.setText("视频播放");
videoView = (VideoView) findViewById(R.id.libPlayVideo_videoView);
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
if (isFirst) {
isFirst = false;
Toast.makeText(VideoPlayActivity.this, "播放该视频异常", Toast.LENGTH_SHORT).show();
}
return true;
}
});
String mVideoPath = getIntent().getStringExtra(VedioRecordActivity.kVideoSavePath);
File file = new File(mVideoPath);
if (file.exists()) {
videoView.setVideoPath(file.getAbsolutePath());
videoView.start();
setLoop(file.getAbsolutePath());
} else {
Log.e("tag", "not found video " + mVideoPath);
}
}
public void setLoop(final String videoPath) {
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
mp.setLooping(true);
}
});
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoView.setVideoPath(videoPath);
videoView.start();
}
});
}
public void videoPlayClick(View view) {
switch(view.getId()) {
case R.id.libPlayVideo_tv_cancel:
finish();
break;
case R.id.libPlayVideo_tv_more:
Toast.makeText(this, "更多", Toast.LENGTH_SHORT).show();
break;
}
}
}
18
Source : VideoPlayActivity.java
with Apache License 2.0
from shensky711
with Apache License 2.0
from shensky711
public clreplaced VideoPlayActivity extends AppCompatActivity {
private static final String KEY_replacedLE = "KEY_replacedLE";
private static final String KEY_PATH = "KEY_PATH";
private static final String KEY_URL = "KEY_URL";
public static void playLocal(Context context, String replacedle, String path) {
Intent intent = new Intent(context, VideoPlayActivity.clreplaced);
intent.putExtra(KEY_PATH, path);
intent.putExtra(KEY_replacedLE, replacedle);
context.startActivity(intent);
}
public static void playNetwork(Context context, String replacedle, String url) {
Intent intent = new Intent(context, VideoPlayActivity.clreplaced);
intent.putExtra(KEY_URL, url);
intent.putExtra(KEY_replacedLE, replacedle);
context.startActivity(intent);
}
private VideoView mVideoView;
private ProgressBar mProgressBar;
private ActionbarMediaController mMediaController;
private String mreplacedle;
private String mPath;
private String mUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_play);
extraBundle();
initViews();
}
private void extraBundle() {
Bundle bundle = getIntent().getExtras();
if (bundle == null || (TextUtils.isEmpty(mUrl = bundle.getString(KEY_URL)) && TextUtils.isEmpty(mPath = bundle.getString(KEY_PATH)))) {
throw new IllegalArgumentException("bundle must contain url or path");
}
mreplacedle = bundle.getString(KEY_replacedLE);
}
private void initViews() {
mProgressBar = (ProgressBar) findViewById(R.id.activity_video_play_loading);
mVideoView = (VideoView) findViewById(R.id.activity_video_play_video);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mProgressBar.setVisibility(View.GONE);
mp.start();
mMediaController.show(3000);
}
});
mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
mProgressBar.setVisibility(View.GONE);
mMediaController.show(0);
return false;
}
});
if (!TextUtils.isEmpty(mPath)) {
mVideoView.setVideoPath(mPath);
} else {
mVideoView.setVideoURI(Uri.parse(mUrl));
}
Toolbar toolbar = (Toolbar) findViewById(R.id.activity_video_play_toolbar);
if (!TextUtils.isEmpty(mreplacedle)) {
toolbar.setreplacedle(mreplacedle);
}
setSupportActionBar(toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
mMediaController = new ActionbarMediaController(this);
mMediaController.setSupportActionBar(getSupportActionBar());
mVideoView.setMediaController(mMediaController);
mMediaController.setMediaPlayer(mVideoView);
}
@Override
protected void onPause() {
super.onPause();
if (mVideoView != null) {
mVideoView.pause();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mVideoView != null) {
mVideoView.stopPlayback();
}
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// TODO:横屏
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// TODO:竖屏
}
}
}
18
Source : CustomMediacontrol.java
with Apache License 2.0
from RockTeach
with Apache License 2.0
from RockTeach
public void setVideoView(VideoView videoView) {
mVideoView = videoView;
mVideoView.setKeepScreenOn(true);
ViewGroup parent = (ViewGroup) mVideoView.getParent();
parent.addView(this);
}
18
Source : VideoPlayer.java
with MIT License
from praharshjain
with MIT License
from praharshjain
public clreplaced VideoPlayer extends Activity {
private VideoView vw;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
hideStatusBar();
setContentView(R.layout.video_player);
vw = findViewById(R.id.videoView);
vw.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int i) {
hideStatusBar();
}
});
progressDialog = new ProgressDialog(this);
showProgressBar();
MediaController mc = new MediaController(this);
mc.setAnchorView(vw);
mc.setMediaPlayer(vw);
Uri video = null;
try {
video = Uri.parse(getIntent().getStringExtra("file"));
} catch (Exception e) {
finish();
}
vw.setVideoURI(video);
vw.setMediaController(mc);
vw.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
progressDialog.dismiss();
}
});
vw.requestFocus();
vw.start();
}
@Override
protected void onStop() {
if (vw != null)
vw.stopPlayback();
super.onStop();
}
@Override
protected void onDestroy() {
if (vw != null)
vw.stopPlayback();
super.onDestroy();
}
protected void hideStatusBar() {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
}
protected void showProgressBar() {
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
progressDialog.show();
}
}
18
Source : MainActivity.java
with MIT License
from Pradyuman7
with MIT License
from Pradyuman7
public clreplaced MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
VideoView videoView;
EditText textView;
// For looking logs
ArrayAdapter adapter;
ArrayList<String> list = new ArrayList<>();
CameraSource cameraSource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.CAMERA }, 1);
Toast.makeText(this, "Grant Permission and restart app", Toast.LENGTH_SHORT).show();
} else {
videoView = findViewById(R.id.videoView);
textView = findViewById(R.id.textView);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videoplayback));
videoView.start();
createCameraSource();
}
}
// This clreplaced will use google vision api to detect eyes
private clreplaced EyesTracker extends Tracker<Face> {
private final float THRESHOLD = 0.75f;
private EyesTracker() {
}
@Override
public void onUpdate(Detector.Detections<Face> detections, Face face) {
if (face.getIsLeftEyeOpenProbability() > THRESHOLD || face.getIsRightEyeOpenProbability() > THRESHOLD) {
Log.i(TAG, "onUpdate: Eyes Detected");
showStatus("Eyes Detected and open, so video continues");
if (!videoView.isPlaying())
videoView.start();
} else {
if (videoView.isPlaying())
videoView.pause();
showStatus("Eyes Detected and closed, so video paused");
}
}
@Override
public void onMissing(Detector.Detections<Face> detections) {
super.onMissing(detections);
showStatus("Face Not Detected yet!");
}
@Override
public void onDone() {
super.onDone();
}
}
private clreplaced FaceTrackerFactory implements MultiProcessor.Factory<Face> {
private FaceTrackerFactory() {
}
@Override
public Tracker<Face> create(Face face) {
return new EyesTracker();
}
}
public void createCameraSource() {
FaceDetector detector = new FaceDetector.Builder(this).setTrackingEnabled(true).setClreplacedificationType(FaceDetector.ALL_CLreplacedIFICATIONS).setMode(FaceDetector.FAST_MODE).build();
detector.setProcessor(new MultiProcessor.Builder(new FaceTrackerFactory()).build());
cameraSource = new CameraSource.Builder(this, detector).setRequestedPreviewSize(1024, 768).setFacing(CameraSource.CAMERA_FACING_FRONT).setRequestedFps(30.0f).build();
try {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the doreplacedentation
// for ActivityCompat#requestPermissions for more details.
return;
}
cameraSource.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
if (cameraSource != null) {
try {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the doreplacedentation
// for ActivityCompat#requestPermissions for more details.
return;
}
cameraSource.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
protected void onPause() {
super.onPause();
if (cameraSource != null) {
cameraSource.stop();
}
if (videoView.isPlaying()) {
videoView.pause();
}
}
public void showStatus(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(message);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
if (cameraSource != null) {
cameraSource.release();
}
}
}
18
Source : PreviewActivity.java
with GNU General Public License v3.0
from PowerExplorer
with GNU General Public License v3.0
from PowerExplorer
/**
* Created by Bhuvnesh on 08-03-2017.
*/
public clreplaced PreviewActivity extends AppCompatActivity {
private VideoView videoView;
private SeekBar seekBar;
private int stopPosition;
private static final String POSITION = "position";
private static final String FILEPATH = "filepath";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
videoView = (VideoView) findViewById(R.id.videoView);
seekBar = (SeekBar) findViewById(R.id.seekBar);
TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
String filePath = getIntent().getStringExtra(FILEPATH);
tvInstruction.setText("Video stored at path " + filePath);
videoView.setVideoURI(Uri.parse(filePath));
videoView.start();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
// this is when actually seekbar has been seeked to a new position
videoView.seekTo(progress);
}
}
});
}
@Override
protected void onPause() {
super.onPause();
// stopPosition is an int
stopPosition = videoView.getCurrentPosition();
videoView.pause();
}
@Override
protected void onResume() {
super.onResume();
videoView.seekTo(stopPosition);
videoView.start();
}
private Runnable onEverySecond = new Runnable() {
@Override
public void run() {
if (seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if (videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle arrow click here
if (item.gereplacedemId() == android.R.id.home) {
// close this activity and return to preview activity (if there is any)
finish();
}
return super.onOptionsItemSelected(item);
}
}
18
Source : VideoViewSubject.java
with Apache License 2.0
from pkware
with Apache License 2.0
from pkware
/**
* Propositions for {@link VideoView} subjects.
*/
public clreplaced VideoViewSubject extends AbstractViewSubject<VideoView> {
@Nullable
private final VideoView actual;
public VideoViewSubject(@Nonnull FailureMetadata failureMetadata, @Nullable VideoView actual) {
super(failureMetadata, actual);
this.actual = actual;
}
public void isPausable() {
check("canPause()").that(actual.canPause()).isTrue();
}
public void isNotPausable() {
check("canPause()").that(actual.canPause()).isFalse();
}
public void isSeekableBackward() {
check("canSeekBackward()").that(actual.canSeekBackward()).isTrue();
}
public void isNotSeekableBackward() {
check("canSeekBackward()").that(actual.canSeekBackward()).isFalse();
}
public void isSeekableForward() {
check("canSeekForward()").that(actual.canSeekForward()).isTrue();
}
public void isNotSeekableForward() {
check("canSeekForward()").that(actual.canSeekForward()).isFalse();
}
@TargetApi(JELLY_BEAN_MR2)
public void hasAudioSessionId(int id) {
check("getAudioSessionId()").that(actual.getAudioSessionId()).isEqualTo(id);
}
public void hasBufferPercentage(int percentage) {
check("getBufferPercentage()").that(actual.getBufferPercentage()).isEqualTo(percentage);
}
public void hasCurrentPosition(int position) {
check("getCurrentPosition()").that(actual.getCurrentPosition()).isEqualTo(position);
}
public void hasDuration(int duration) {
check("getDuration()").that(actual.getDuration()).isEqualTo(duration);
}
public void isPlaying() {
check("isPlaying()").that(actual.isPlaying()).isTrue();
}
public void isNotPlaying() {
check("isPlaying()").that(actual.isPlaying()).isFalse();
}
}
18
Source : PlaybackOverlayActivity.java
with MIT License
from PacktPublishing
with MIT License
from PacktPublishing
/**
* PlaybackOverlayActivity for video playback that loads PlaybackOverlayFragment
*/
public clreplaced PlaybackOverlayActivity extends Activity implements PlaybackOverlayFragment.OnPlayPauseClickedListener {
private static final String TAG = "PlaybackOverlayActivity";
private VideoView mVideoView;
private LeanbackPlaybackState mPlaybackState = LeanbackPlaybackState.IDLE;
private MediaSession mSession;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playback_controls);
loadViews();
setupCallbacks();
mSession = new MediaSession(this, "LeanbackSampleApp");
mSession.setCallback(new MediaSessionCallback());
mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
mSession.setActive(true);
}
@Override
public void onDestroy() {
super.onDestroy();
mVideoView.suspend();
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
PlaybackOverlayFragment playbackOverlayFragment = (PlaybackOverlayFragment) getFragmentManager().findFragmentById(R.id.playback_controls_fragment);
switch(keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY:
playbackOverlayFragment.togglePlayback(false);
return true;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
playbackOverlayFragment.togglePlayback(false);
return true;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
if (mPlaybackState == LeanbackPlaybackState.PLAYING) {
playbackOverlayFragment.togglePlayback(false);
} else {
playbackOverlayFragment.togglePlayback(true);
}
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
/**
* Implementation of OnPlayPauseClickedListener
*/
public void onFragmentPlayPause(Movie movie, int position, Boolean playPause) {
mVideoView.setVideoPath(movie.getVideoUrl());
if (position == 0 || mPlaybackState == LeanbackPlaybackState.IDLE) {
setupCallbacks();
mPlaybackState = LeanbackPlaybackState.IDLE;
}
if (playPause && mPlaybackState != LeanbackPlaybackState.PLAYING) {
mPlaybackState = LeanbackPlaybackState.PLAYING;
if (position > 0) {
mVideoView.seekTo(position);
mVideoView.start();
}
} else {
mPlaybackState = LeanbackPlaybackState.PAUSED;
mVideoView.pause();
}
updatePlaybackState(position);
updateMetadata(movie);
}
private void updatePlaybackState(int position) {
PlaybackState.Builder stateBuilder = new PlaybackState.Builder().setActions(getAvailableActions());
int state = PlaybackState.STATE_PLAYING;
if (mPlaybackState == LeanbackPlaybackState.PAUSED) {
state = PlaybackState.STATE_PAUSED;
}
stateBuilder.setState(state, position, 1.0f);
mSession.setPlaybackState(stateBuilder.build());
}
private long getAvailableActions() {
long actions = PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PLAY_FROM_SEARCH;
if (mPlaybackState == LeanbackPlaybackState.PLAYING) {
actions |= PlaybackState.ACTION_PAUSE;
}
return actions;
}
private void updateMetadata(final Movie movie) {
final MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder();
String replacedle = movie.getreplacedle().replace("_", " -");
metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_replacedLE, replacedle);
metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_SUBreplacedLE, movie.getDescription());
metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_ICON_URI, movie.getCardImageUrl());
// And at minimum the replacedle and artist for legacy support
metadataBuilder.putString(MediaMetadata.METADATA_KEY_replacedLE, replacedle);
metadataBuilder.putString(MediaMetadata.METADATA_KEY_ARTIST, movie.getStudio());
Glide.with(this).load(Uri.parse(movie.getCardImageUrl())).asBitmap().into(new SimpleTarget<Bitmap>(500, 500) {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
metadataBuilder.putBitmap(MediaMetadata.METADATA_KEY_ART, bitmap);
mSession.setMetadata(metadataBuilder.build());
}
});
}
private void loadViews() {
mVideoView = (VideoView) findViewById(R.id.videoView);
mVideoView.setFocusable(false);
mVideoView.setFocusableInTouchMode(false);
}
private void setupCallbacks() {
mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
String msg = "";
if (extra == MediaPlayer.MEDIA_ERROR_TIMED_OUT) {
msg = getString(R.string.video_error_media_load_timeout);
} else if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) {
msg = getString(R.string.video_error_server_inaccessible);
} else {
msg = getString(R.string.video_error_unknown_error);
}
mVideoView.stopPlayback();
mPlaybackState = LeanbackPlaybackState.IDLE;
return false;
}
});
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (mPlaybackState == LeanbackPlaybackState.PLAYING) {
mVideoView.start();
}
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mPlaybackState = LeanbackPlaybackState.IDLE;
}
});
}
@Override
public void onResume() {
super.onResume();
mSession.setActive(true);
}
@Override
public void onPause() {
super.onPause();
if (mVideoView.isPlaying()) {
if (!requestVisibleBehind(true)) {
// Try to play behind launcher, but if it fails, stop playback.
stopPlayback();
}
} else {
requestVisibleBehind(false);
}
}
@Override
protected void onStop() {
super.onStop();
mSession.release();
}
@Override
public void onVisibleBehindCanceled() {
super.onVisibleBehindCanceled();
}
private void stopPlayback() {
if (mVideoView != null) {
mVideoView.stopPlayback();
}
}
/*
* List of various states that we can be in
*/
public static enum LeanbackPlaybackState {
PLAYING, PAUSED, BUFFERING, IDLE
}
private clreplaced MediaSessionCallback extends MediaSession.Callback {
}
}
18
Source : MainActivity.java
with Apache License 2.0
from nasa
with Apache License 2.0
from nasa
public clreplaced MainActivity extends Activity {
public final static String ACTION_STOP = "gov.nasa.arc.astrobee.signal_intention_state.ACTION_STOP";
private static final int UPDATE_STATE_QUEUED = 2;
private static final int UPDATE_STATE_CHANGED = 1;
private static final int UPDATE_STATE_ERROR = 0;
private static final int UPDATE_STATE_IGNORED = 3;
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
private boolean isFullScreen;
private VideoView videoView;
private AppCustomConfig config = null;
private VideoStateConfig currentStateVideo = null;
private int videoSavedPosition = 0;
public static boolean isActivityRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.AppTask> tasks = activityManager.getAppTasks();
for (ActivityManager.AppTask task : tasks) {
if (task.getTaskInfo().baseActivity == null) {
continue;
}
if (ctx.getPackageName().equalsIgnoreCase(task.getTaskInfo().baseActivity.getPackageName()))
return true;
}
return false;
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Broadcast to be called from ADB control script or any other activity
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_STOP);
registerReceiver(receiver, filter);
// Load configuration
config = new AppCustomConfig(this);
config.loadConfig();
// Keep screen always on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// Event to capture the state of the system bars during user interaction
View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
// Note that system bars will only be "visible" if none of the
// LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
// The system bars are visible.
isFullScreen = false;
} else {
// The system bars are NOT visible.
isFullScreen = true;
}
}
});
// VideoView to show animations
videoView = (VideoView) findViewById(R.id.videoView);
// TODO Move to performClick
// Event to hide system bars (or not), when user touches the screen
videoView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (!isFullScreen) {
hideSystemUI();
}
return false;
}
});
// To be run when a video is done playing
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
handleVideoCompletion();
}
});
// To be executed when video is ready to be played.
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
if (!videoView.isPlaying()) {
videoView.start();
}
}
});
}
});
// Uncomment if you want to start playing the default animation
// playVideoSignal(config.getRunnerState().getNextDefaultState());
hideSystemUI();
// Run RosService
Intent serviceIntent = new Intent(this, SignalStateService.clreplaced);
startService(serviceIntent);
}
@Override
protected void onDestroy() {
super.onDestroy();
// Unregister EventBus and broadcast receiver
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
unregisterReceiver(receiver);
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
@Override
protected void onRestart() {
super.onRestart();
videoView.resume();
videoView.seekTo(videoSavedPosition);
}
@Override
protected void onPause() {
videoView.pause();
videoSavedPosition = videoView.getCurrentPosition();
super.onPause();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideSystemUI();
}
}
/**
* This callback receives any messages forwarded from the ROS node
*
* @param event
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(SignalState event) {
// Get signal name from id
String state = Utils.getStateNameFromId(event.getState());
// Convert state string received into a recognizable state
VideoStateConfig stateConfig = config.getStateConfig(state);
// Handle signal
handleSignalState(stateConfig);
}
private boolean handleSignalState(VideoStateConfig stateConfig) {
// Slightly validation for JSON on execution time
if (stateConfig == null) {
// Ignore null states
Toast.makeText(this, "NULL STATE", Toast.LENGTH_LONG).show();
return false;
} else if (!stateConfig.isValid()) {
// Bad state.
Toast.makeText(this, "INVALID STATE", Toast.LENGTH_LONG).show();
return false;
}
switch(stateConfig.getType()) {
case VideoStateConfig.TYPE_RUNNER:
// Ignore runner state. Activity should be launch from service
Toast.makeText(this, "ALREADY RUNNING ACTIVITY", Toast.LENGTH_LONG).show();
// Move forward to next state
String nextState = stateConfig.getNextDefaultState();
if (nextState != null && !nextState.equals(stateConfig.getRosState())) {
// State has next state and it is different from itself
VideoStateConfig newState = config.getStateConfig(nextState);
// Recursive call
if (handleSignalState(newState)) {
return true;
}
}
// If no next state, or it fails to be applied, keep runner state
updateState(stateConfig);
break;
case VideoStateConfig.TYPE_IDLE:
videoView.stopPlayback();
videoView.setVisibility(View.GONE);
videoView.setVisibility(View.VISIBLE);
updateState(stateConfig);
break;
case VideoStateConfig.TYPE_LOOP:
case VideoStateConfig.TYPE_SEQUENTIAL:
int updateResult = updateState(stateConfig);
switch(updateResult) {
case UPDATE_STATE_CHANGED:
playVideo(stateConfig.getLocalVideoName());
break;
case UPDATE_STATE_QUEUED:
Toast.makeText(this, "STATE WAS QUEUED", Toast.LENGTH_LONG).show();
break;
case UPDATE_STATE_IGNORED:
Toast.makeText(this, "STATE WAS IGNORED", Toast.LENGTH_LONG).show();
break;
case UPDATE_STATE_ERROR:
Toast.makeText(this, "STATE ERROR", Toast.LENGTH_LONG).show();
break;
}
break;
default:
Toast.makeText(this, "STATE " + stateConfig.getRosState() + " is a valid ROS state but it was not recognized for the app. " + "Check config file", Toast.LENGTH_LONG).show();
return false;
}
return true;
}
private void handleVideoCompletion() {
// Do we want the video to keep running until a new command is received?
if (currentStateVideo.getType().equals(VideoStateConfig.TYPE_LOOP)) {
videoView.start();
} else if (currentStateVideo.getType().equals(VideoStateConfig.TYPE_SEQUENTIAL) && currentStateVideo.getNextDefaultState() != null) {
// Get next default state to be played next
VideoStateConfig newState = config.getStateConfig(currentStateVideo.getNextDefaultState());
handleSignalState(newState);
}
}
private int updateState(VideoStateConfig state) {
if (state == null) {
// State not yet supported.
Toast.makeText(this, "NOT SUPPORTED STATE", Toast.LENGTH_LONG).show();
return UPDATE_STATE_ERROR;
}
if (currentStateVideo == null) {
// If first execution
currentStateVideo = new VideoStateConfig();
}
if (state.getRosState().equals(currentStateVideo.getRosState())) {
// We received the same state again. Put it in queue if it is sequential
if (currentStateVideo.getType().equals(VideoStateConfig.TYPE_SEQUENTIAL)) {
currentStateVideo.setNextDefaultState(state.getRosState());
return UPDATE_STATE_QUEUED;
} else {
// Ignore otherwise: Recurrent states will be ignored if loop, idle or runner.
return UPDATE_STATE_IGNORED;
}
} else {
// We received a different state. Let's change it
currentStateVideo = state;
}
return UPDATE_STATE_CHANGED;
}
private void playVideo(String videoName) {
int videoID = getResources().getIdentifier(videoName, "raw", this.getPackageName());
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + videoID);
if (videoView.isPlaying()) {
videoView.stopPlayback();
}
videoView.setVideoURI(uri);
videoView.start();
}
/**
* This callback receives any messages forwarded from the RosMasterMonitor
*
* @param event
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
int eventId = event.getMessage();
if (eventId == MessageEvent.ROS_MASTER_SHOW_UP) {
} else if (eventId == MessageEvent.ROS_MASTER_WENT_AWAY) {
// TODO Handle unexpected configuration of sleep state
if (!currentStateVideo.getType().equals(VideoStateConfig.TYPE_IDLE) && !currentStateVideo.getRosState().equals("SLEEP")) {
VideoStateConfig newState = config.getStateConfig("SLEEP");
handleSignalState(newState);
}
}
}
private void hideSystemUI() {
// Enables regular immersive mode.
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
// Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(// View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
// View.SYSTEM_UI_FLAG_LAYOUT_STABLE
// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
// | View.SYSTEM_UI_FLAG_FULLSCREEN);
isFullScreen = true;
}
// Shows the system bars by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}
18
Source : VideoFragment.java
with Apache License 2.0
from Kerr1Gan
with Apache License 2.0
from Kerr1Gan
/**
* Created by Ethan_Xiang on 2017/10/10.
*/
public clreplaced VideoFragment extends Fragment {
private String mVideoUrl = "http://sp.9ky.cc/vlook.php?id=YklkPTQ5NDcyMjY=";
private MediaController mMediaController;
private VideoView mVideoView;
private int mLastPosition = 0;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.cc_fragment_video, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mMediaController = new MediaController(getContext());
mVideoView = (VideoView) view.findViewById(R.id.video);
mVideoView.setVideoPath(mVideoUrl);
mVideoView.setMediaController(mMediaController);
mVideoView.requestFocus();
}
@Override
public void onResume() {
super.onResume();
mVideoView.start();
mVideoView.seekTo(mLastPosition);
}
@Override
public void onPause() {
super.onPause();
mVideoView.pause();
mLastPosition = mVideoView.getCurrentPosition();
}
@Override
public void onDestroy() {
super.onDestroy();
mVideoView.stopPlayback();
}
}
18
Source : GalleryItemFragment.java
with Apache License 2.0
from googlesamples
with Apache License 2.0
from googlesamples
/**
* Displays selected gallery item on the full screen.
*/
public clreplaced GalleryItemFragment extends Fragment implements OnGestureListener {
/**
* Request code for starting the {@link MenuActivity}.
*/
public static final int MENU_REQUEST_CODE = 205;
private static final String NAME_KEY = "name";
private static final String PATH_KEY = "path";
private static final String TYPE_KEY = "type";
private ImageView imageView;
private ImageView playButtonVideoImageView;
private VideoView videoView;
private String filePath;
private GalleryItem.Type galleryItemType;
private OnGalleryItemDeletedListener onGalleryItemDeletedListener;
/**
* Creates new instance of the {@link GalleryItemFragment}, preplaceding selected {@link GalleryItem}
* object to it.
*/
public static GalleryItemFragment newInstance(GalleryItem galleryItem) {
final GalleryItemFragment galleryItemFragment = new GalleryItemFragment();
galleryItemFragment.setArguments(GalleryItemFragment.createArguments(galleryItem.getName(), galleryItem.getPath(), galleryItem.getType().ordinal()));
return galleryItemFragment;
}
/**
* Returns {@link Bundle} with preplaceded item name, path and type.
*/
private static Bundle createArguments(String name, String path, int type) {
final Bundle bundle = new Bundle();
bundle.putString(NAME_KEY, name);
bundle.putString(PATH_KEY, path);
bundle.putInt(TYPE_KEY, type);
return bundle;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
galleryItemType = GalleryItem.Type.fromId(getArguments().getInt(TYPE_KEY));
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
switch(galleryItemType) {
case VIDEO:
return inflater.inflate(R.layout.gallery_item_video, container, false);
default:
return inflater.inflate(R.layout.gallery_item_picture, container, false);
}
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
switch(galleryItemType) {
case VIDEO:
playButtonVideoImageView = view.findViewById(R.id.playButtonVideoImageView);
filePath = getArguments().getString(PATH_KEY);
videoView = view.findViewById(R.id.videoView);
videoView.setVideoURI(Uri.fromFile(new File(filePath)));
videoView.start();
videoView.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
playButtonVideoImageView.setVisibility(View.VISIBLE);
}
});
break;
default:
imageView = view.findViewById(R.id.galleryItemImageView);
filePath = getArguments().getString(PATH_KEY);
final Drawable drawable = Drawable.createFromPath(filePath);
imageView.setImageDrawable(drawable);
}
}
@Override
public void onResume() {
super.onResume();
((BaseActivity) requireActivity()).setOnGestureListener(this);
}
@Override
public boolean onGesture(Gesture glreplacedGesture) {
switch(glreplacedGesture) {
case TAP:
switch(GalleryItem.Type.fromId(getArguments().getInt(TYPE_KEY))) {
case IMAGE:
startActivityForResult(getMenuIntent(R.menu.photo_menu), MENU_REQUEST_CODE);
break;
case VIDEO:
startActivityForResult(getMenuIntent(R.menu.video_menu), MENU_REQUEST_CODE);
}
return true;
case SWIPE_DOWN:
((BaseActivity) requireActivity()).popBackStack();
return true;
default:
return false;
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == MENU_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
final int id = data.getIntExtra(MenuActivity.EXTRA_MENU_ITEM_ID_KEY, MenuActivity.EXTRA_MENU_ITEM_DEFAULT_VALUE);
switch(id) {
case R.id.play_video:
playButtonVideoImageView.setVisibility(View.GONE);
videoView.start();
break;
case R.id.delete:
GalleryItemsProvider.deleteGalleryItem(getContext(), filePath);
onGalleryItemDeletedListener.onGalleryItemDeleted(filePath);
break;
}
}
}
/**
* Sets the {@link OnGalleryItemDeletedListener} listener for this fragment.
*/
public void setOnGalleryItemDeletedListener(OnGalleryItemDeletedListener listener) {
this.onGalleryItemDeletedListener = listener;
}
private Intent getMenuIntent(int menu) {
final Intent intent = new Intent(getContext(), MenuActivity.clreplaced);
intent.putExtra(MenuActivity.EXTRA_MENU_KEY, menu);
return intent;
}
/**
* Interface to notify parent that {@link GalleryItem} has been deleted.
*/
interface OnGalleryItemDeletedListener {
void onGalleryItemDeleted(String filePath);
}
}
18
Source : VideoPlayer.java
with Apache License 2.0
from djzhao627
with Apache License 2.0
from djzhao627
/**
* Created by djzhao on 17/04/29.
*/
public clreplaced VideoPlayer extends BaseActivity {
private VideoView videoView;
private MediaController mediaController;
@Override
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.activity_test_video_player);
findViewById();
initView();
}
@Override
protected void findViewById() {
this.videoView = $(R.id.player_test_vv);
}
@Override
protected void initView() {
// String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/movie.mp4";
String uri = "android.resource://" + getPackageName() + "/" + R.raw.base;
// 本地视频
// videoView.setVideoPath(path);
// 网络视频
// videoView.setVideoURI(Uri.parse("http://www.runoob.com/try/demo_source/movie.mp4"));
videoView.setVideoURI(Uri.parse(uri));
mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
mediaController.setMediaPlayer(videoView);
}
}
18
Source : VideoCheckFragment.java
with Apache License 2.0
from CreateChance
with Apache License 2.0
from CreateChance
public clreplaced VideoCheckFragment extends Fragment implements View.OnClickListener {
private static final String TAG = "VideoCheckFragment";
private Scene mScene;
private Callback mCallback;
private VideoView mVideoPlayer;
public void setScene(Scene scene) {
this.mScene = scene;
}
public void setCallback(Callback callback) {
this.mCallback = callback;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_video_check, container, false);
root.findViewById(R.id.iv_redo).setOnClickListener(this);
root.findViewById(R.id.iv_done).setOnClickListener(this);
mVideoPlayer = root.findViewById(R.id.vw_video_player);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
// PlayRequest request = new PlayRequest.Builder()
// .loop(true)
// .source(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "videoeditor/input.mp4")))
// .build();
// mVideoPlayer.start(request);
mVideoPlayer.setVideoURI(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "videoeditor/input.mp4")));
mVideoPlayer.start();
}
@Override
public void onStop() {
super.onStop();
mVideoPlayer.stopPlayback();
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.iv_redo:
if (mCallback != null) {
mCallback.onRedo();
}
break;
case R.id.iv_done:
if (mCallback != null) {
mCallback.onDone();
}
break;
default:
break;
}
}
interface Callback {
void onRedo();
void onDone();
}
}
18
Source : GalleryVideoFragment.java
with Apache License 2.0
from blueflychief
with Apache License 2.0
from blueflychief
public clreplaced GalleryVideoFragment extends Fragment implements CacheListener {
String url;
int position;
boolean playerStarted;
VideoView videoView;
ProgressBar progressBar;
private boolean visibleForUser;
private final VideoProgressUpdater updater = new VideoProgressUpdater();
public static GalleryVideoFragment newInstance(String url) {
GalleryVideoFragment fragment = new GalleryVideoFragment();
Bundle bundle = new Bundle();
bundle.putString("url", url);
fragment.setArguments(bundle);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_video, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
progressBar = view.findViewById(R.id.progressBar);
videoView = view.findViewById(R.id.videoView);
if (getArguments() != null) {
url = getArguments().getString("url");
}
startProxy();
if (visibleForUser) {
startPlayer();
}
}
private void startPlayer() {
videoView.seekTo(position);
videoView.start();
playerStarted = true;
}
private void startProxy() {
HttpProxyCacheServer proxy = App.getProxy(getActivity());
proxy.registerCacheListener(this, url);
videoView.setVideoPath(proxy.getProxyUrl(url));
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
visibleForUser = isVisibleToUser;
if (videoView != null) {
if (visibleForUser) {
startPlayer();
} else if (playerStarted) {
position = videoView.getCurrentPosition();
videoView.pause();
}
}
}
@Override
public void onResume() {
super.onResume();
updater.start();
}
@Override
public void onPause() {
super.onPause();
updater.stop();
}
@Override
public void onDestroy() {
super.onDestroy();
videoView.stopPlayback();
App.getProxy(getActivity()).unregisterCacheListener(this);
}
@Override
public void onCacheAvailable(File file, String url, int percentsAvailable) {
progressBar.setSecondaryProgress(percentsAvailable);
}
private void updateVideoProgress() {
int videoProgress = videoView.getCurrentPosition() * 100 / videoView.getDuration();
progressBar.setProgress(videoProgress);
}
// @SeekBarTouchStop(R.id.progressBar)
// void seekVideo() {
// int videoPosition = videoView.getDuration() * progressBar.getProgress() / 100;
// videoView.seekTo(videoPosition);
// }
private final clreplaced VideoProgressUpdater extends Handler {
public void start() {
sendEmptyMessage(0);
}
public void stop() {
removeMessages(0);
}
@Override
public void handleMessage(Message msg) {
updateVideoProgress();
sendEmptyMessageDelayed(0, 500);
}
}
}
18
Source : MainActivity.java
with MIT License
from a914-gowtham
with MIT License
from a914-gowtham
public clreplaced MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final int REQUEST_TAKE_VIDEO = 552;
private VideoView videoView;
private MediaController mediaController;
private EditText edtFixedGap, edtMinGap, edtMinFrom, edtMAxTo;
private int trimType;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView = findViewById(R.id.video_view);
edtFixedGap = findViewById(R.id.edt_fixed_gap);
edtMinGap = findViewById(R.id.edt_min_gap);
edtMinFrom = findViewById(R.id.edt_min_from);
edtMAxTo = findViewById(R.id.edt_max_to);
mediaController = new MediaController(this);
findViewById(R.id.btn_default_trim).setOnClickListener(this);
findViewById(R.id.btn_fixed_gap).setOnClickListener(this);
findViewById(R.id.btn_min_gap).setOnClickListener(this);
findViewById(R.id.btn_min_max_gap).setOnClickListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == TrimVideo.VIDEO_TRIMMER_REQ_CODE && data != null) {
Uri uri = Uri.parse(TrimVideo.getTrimmedVideoPath(data));
Log.d(TAG, "Trimmed path:: " + uri);
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();
videoView.setOnPreparedListener(mediaPlayer -> {
mediaController.setAnchorView(videoView);
});
String filepath = String.valueOf(uri);
File file = new File(filepath);
long length = file.length();
Log.d(TAG, "Video size:: " + (length / 1024));
} else if (requestCode == REQUEST_TAKE_VIDEO && resultCode == RESULT_OK) {
/* //check video duration if needed
if (TrimmerUtils.getVideoDuration(this,data.getData())<=30){
Toast.makeText(this,"Video should be larger than 30 sec",Toast.LENGTH_SHORT).show();
return;
}*/
if (data.getData() != null) {
LogMessage.v("Video path:: " + data.getData());
openTrimActivity(String.valueOf(data.getData()));
} else {
Toast.makeText(this, "video uri is null", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void openTrimActivity(String data) {
if (trimType == 0) {
TrimVideo.activity(data).start(this);
} else if (trimType == 1) {
TrimVideo.activity(data).setTrimType(TrimType.FIXED_DURATION).setFixedDuration(getEdtValueLong(edtFixedGap)).start(this);
} else if (trimType == 2) {
TrimVideo.activity(data).setTrimType(TrimType.MIN_DURATION).setMinDuration(getEdtValueLong(edtMinGap)).start(this);
} else {
TrimVideo.activity(data).setTrimType(TrimType.MIN_MAX_DURATION).setMinToMax(getEdtValueLong(edtMinFrom), getEdtValueLong(edtMAxTo)).start(this);
}
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.btn_default_trim:
onDefaultTrimClicked();
break;
case R.id.btn_fixed_gap:
onFixedTrimClicked();
break;
case R.id.btn_min_gap:
onMinGapTrimClicked();
break;
case R.id.btn_min_max_gap:
onMinToMaxTrimClicked();
break;
}
}
private void onDefaultTrimClicked() {
trimType = 0;
if (checkCamStoragePer())
showVideoOptions();
}
private void onFixedTrimClicked() {
trimType = 1;
if (isEdtTxtEmpty(edtFixedGap))
Toast.makeText(this, "Enter fixed gap duration", Toast.LENGTH_SHORT).show();
else if (checkCamStoragePer())
showVideoOptions();
}
private void onMinGapTrimClicked() {
trimType = 2;
if (isEdtTxtEmpty(edtMinGap))
Toast.makeText(this, "Enter min gap duration", Toast.LENGTH_SHORT).show();
else if (checkCamStoragePer())
showVideoOptions();
}
private void onMinToMaxTrimClicked() {
trimType = 3;
if (isEdtTxtEmpty(edtMinFrom))
Toast.makeText(this, "Enter min gap duration", Toast.LENGTH_SHORT).show();
else if (isEdtTxtEmpty(edtMAxTo))
Toast.makeText(this, "Enter max gap duration", Toast.LENGTH_SHORT).show();
else if (checkCamStoragePer())
showVideoOptions();
}
public void showVideoOptions() {
try {
BottomSheet.Builder builder = getBottomSheet();
builder.sheet(R.menu.menu_video);
builder.listener(item -> {
if (R.id.action_take == item.gereplacedemId())
captureVideo();
else
openVideo();
return false;
});
builder.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public BottomSheet.Builder getBottomSheet() {
return new BottomSheet.Builder(this).replacedle(R.string.txt_option);
}
public void captureVideo() {
try {
Intent intent = new Intent("android.media.action.VIDEO_CAPTURE");
intent.putExtra("android.intent.extra.durationLimit", 30);
startActivityForResult(intent, REQUEST_TAKE_VIDEO);
} catch (Exception e) {
e.printStackTrace();
}
}
public void openVideo() {
try {
Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Video"), REQUEST_TAKE_VIDEO);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (isPermissionOk(grantResults))
showVideoOptions();
}
private boolean isEdtTxtEmpty(EditText editText) {
return editText.getText().toString().trim().isEmpty();
}
private long getEdtValueLong(EditText editText) {
return Long.parseLong(editText.getText().toString().trim());
}
private boolean checkCamStoragePer() {
return checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA);
}
private boolean checkPermission(String... permissions) {
boolean allPermitted = false;
for (String permission : permissions) {
allPermitted = (ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED);
if (!allPermitted)
break;
}
if (allPermitted)
return true;
ActivityCompat.requestPermissions(this, permissions, 220);
return false;
}
private boolean isPermissionOk(int... results) {
boolean isAllGranted = true;
for (int result : results) {
if (PackageManager.PERMISSION_GRANTED != result) {
isAllGranted = false;
break;
}
}
return isAllGranted;
}
}
17
Source : PreviewActivity2.java
with Apache License 2.0
from yellowcath
with Apache License 2.0
from yellowcath
/**
* Created by Bhuvnesh on 08-03-2017.
*/
@TargetApi(16)
public clreplaced PreviewActivity2 extends AppCompatActivity {
private VideoView videoView;
private SeekBar seekBar;
private int stopPosition;
private static final String POSITION = "position";
static final String FILEPATH = "filepath";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
videoView = (VideoView) findViewById(R.id.videoView);
seekBar = (SeekBar) findViewById(R.id.seekBar);
final TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
TextureRecordActivity.mRecorder.waitRecordSuccess(new OnRecordListener() {
@Override
public void onRecordSuccess(VideoInfo videoInfo) {
videoView.setVideoURI(Uri.parse(videoInfo.getVideoPath()));
videoView.start();
String filePath = videoInfo.getVideoPath();
String videoInfoStr = "";
try {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(filePath);
int bitrate = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
retriever.release();
int frameRate = videoInfo.getFrameRate();
int width = videoInfo.getVideoWidth();
int height = videoInfo.getVideoHeight();
int rotation = videoInfo.getVideoRotation();
long duration = videoInfo.getDuration();
videoInfoStr = String.format("size:%dX%d,framerate:%d,rotation:%d,bitrate:%d,duration:%.1fs", width, height, frameRate, rotation, bitrate, duration / 1000f);
} catch (Exception e) {
e.printStackTrace();
}
tvInstruction.setText("Video stored at path " + filePath + "\n" + videoInfoStr);
}
@Override
public void onRecordStart() {
}
@Override
public void onRecordFail(Throwable t) {
}
@Override
public void onRecordStop() {
}
@Override
public void onRecordPause() {
}
@Override
public void onRecordResume() {
}
});
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
// this is when actually seekbar has been seeked to a new position
videoView.seekTo(progress);
}
}
});
}
@Override
protected void onPause() {
super.onPause();
// stopPosition is an int
stopPosition = videoView.getCurrentPosition();
videoView.pause();
}
@Override
protected void onResume() {
super.onResume();
videoView.seekTo(stopPosition);
videoView.start();
}
private Runnable onEverySecond = new Runnable() {
@Override
public void run() {
if (seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if (videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle arrow click here
if (item.gereplacedemId() == android.R.id.home) {
// close this activity and return to preview activity (if there is any)
finish();
}
return super.onOptionsItemSelected(item);
}
public static int selectTrack(MediaExtractor extractor, boolean audio) {
int numTracks = extractor.getTrackCount();
for (int i = 0; i < numTracks; i++) {
MediaFormat format = extractor.getTrackFormat(i);
String mime = format.getString(MediaFormat.KEY_MIME);
if (audio) {
if (mime.startsWith("audio/")) {
return i;
}
} else {
if (mime.startsWith("video/")) {
return i;
}
}
}
return -5;
}
}
17
Source : PreviewActivity.java
with Apache License 2.0
from yellowcath
with Apache License 2.0
from yellowcath
/**
* Created by Bhuvnesh on 08-03-2017.
*/
@TargetApi(16)
public clreplaced PreviewActivity extends AppCompatActivity {
private VideoView videoView;
private SeekBar seekBar;
private int stopPosition;
private static final String POSITION = "position";
static final String FILEPATH = "filepath";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
videoView = (VideoView) findViewById(R.id.videoView);
seekBar = (SeekBar) findViewById(R.id.seekBar);
TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
String filePath = getIntent().getStringExtra(FILEPATH);
String videoInfo = "";
try {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(filePath);
int bitrate = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
retriever.release();
MediaExtractor extractor = new MediaExtractor();
extractor.setDataSource(filePath);
MediaFormat format = extractor.getTrackFormat(selectTrack(extractor, false));
int frameRate = format.containsKey(MediaFormat.KEY_FRAME_RATE) ? format.getInteger(MediaFormat.KEY_FRAME_RATE) : -1;
int width = format.getInteger(MediaFormat.KEY_WIDTH);
int height = format.getInteger(MediaFormat.KEY_HEIGHT);
int rotation = format.containsKey(MediaFormat.KEY_ROTATION) ? format.getInteger(MediaFormat.KEY_ROTATION) : -1;
long duration = format.containsKey(MediaFormat.KEY_DURATION) ? format.getLong(MediaFormat.KEY_DURATION) : -1;
videoInfo = String.format("size:%dX%d,framerate:%d,rotation:%d,bitrate:%d,duration:%.1fs", width, height, frameRate, rotation, bitrate, duration / 1000f / 1000f);
extractor.release();
} catch (Exception e) {
e.printStackTrace();
}
tvInstruction.setText("Video stored at path " + filePath + "\n" + videoInfo);
videoView.setVideoURI(Uri.parse(filePath));
videoView.start();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
// this is when actually seekbar has been seeked to a new position
videoView.seekTo(progress);
}
}
});
}
@Override
protected void onPause() {
super.onPause();
// stopPosition is an int
stopPosition = videoView.getCurrentPosition();
videoView.pause();
}
@Override
protected void onResume() {
super.onResume();
videoView.seekTo(stopPosition);
videoView.start();
}
private Runnable onEverySecond = new Runnable() {
@Override
public void run() {
if (seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if (videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle arrow click here
if (item.gereplacedemId() == android.R.id.home) {
// close this activity and return to preview activity (if there is any)
finish();
}
return super.onOptionsItemSelected(item);
}
public static int selectTrack(MediaExtractor extractor, boolean audio) {
int numTracks = extractor.getTrackCount();
for (int i = 0; i < numTracks; i++) {
MediaFormat format = extractor.getTrackFormat(i);
String mime = format.getString(MediaFormat.KEY_MIME);
if (audio) {
if (mime.startsWith("audio/")) {
return i;
}
} else {
if (mime.startsWith("video/")) {
return i;
}
}
}
return -5;
}
}
17
Source : MediaActivity.java
with Apache License 2.0
from yangchong211
with Apache License 2.0
from yangchong211
public clreplaced MediaActivity extends AppCompatActivity {
private VideoView mVideo;
private Button mBtnStart;
private Button mBtnPause;
private MediaController mMediaController;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media_player);
initView();
initListener();
}
private void initView() {
mVideo = findViewById(R.id.video);
mBtnStart = findViewById(R.id.btn_start);
mBtnPause = findViewById(R.id.btn_pause);
Uri uri = Uri.parse(ConstantVideo.VideoPlayerList[2]);
mVideo.setVideoURI(uri);
mMediaController = new MediaController(this);
mVideo.setMediaController(mMediaController);
mVideo.start();
mVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// mp.setLooping(true);
// 播放
mp.start();
BaseToast.showRoundRectToast("开始播放!");
}
});
mVideo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
BaseToast.showRoundRectToast("播放完毕!");
}
});
}
private void initListener() {
mBtnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mVideo.start();
}
});
mBtnPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mVideo.pause();
}
});
}
}
17
Source : RecoderPlayerActivity.java
with Apache License 2.0
from tsy12321
with Apache License 2.0
from tsy12321
/**
* 视频播放
*/
public clreplaced RecoderPlayerActivity extends BaseActivity {
private static final String INTENT_VIDEO_PATH = "video_path";
private String mVideoPath;
private VideoView mVideoView;
private CircleProgressBar mCircleProgressBar;
private MyOkHttp mMyOkHttp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recoder_player);
mMyOkHttp = new MyOkHttp();
mVideoPath = getIntent().getStringExtra(INTENT_VIDEO_PATH);
// video view
mVideoView = (VideoView) findViewById(R.id.video_view);
mVideoView.setVisibility(View.GONE);
// loading circle
mCircleProgressBar = (CircleProgressBar) findViewById(R.id.circleProgressBar);
mCircleProgressBar.setVisibility(View.GONE);
mCircleProgressBar.setColorSchemeResources(android.R.color.holo_blue_light);
}
@Override
protected void onStart() {
super.onStart();
// 申请权限
String[] perms = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
performCodeWithPermission("需要读取本地文件权限", 1, perms, new BaseActivity.PermissionCallback() {
@Override
public void hasPermission(List<String> allPerms) {
if (mVideoPath.contains("http")) {
// 网络视频
String localFilename = MD5Utils.getMd5(mVideoPath);
// 存储路径
final String path = Environment.getExternalStorageDirectory() + "/a.com.tsy.videodemo/" + localFilename + ".mp4";
// 存储下载路径
String tempPath = Environment.getExternalStorageDirectory() + "/a.com.tsy.videodemo/" + localFilename + "_temp.mp4";
if (new File(path).exists()) {
// 有缓存
mVideoPath = path;
playLocalVideo();
} else {
mMyOkHttp.download().url(mVideoPath).filePath(tempPath).tag(this).enqueue(new DownloadResponseHandler() {
@Override
public void onFinish(File downloadFile) {
downloadFile.renameTo(new File(path));
mVideoPath = path;
playLocalVideo();
}
@Override
public void onProgress(long currentBytes, long totalBytes) {
mCircleProgressBar.setProgress((int) ((float) currentBytes * 100 / totalBytes));
}
@Override
public void onStart(long totalBytes) {
mCircleProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onFailure(String error_msg) {
Toast.makeText(getApplicationContext(), "视频下载错误", Toast.LENGTH_SHORT).show();
}
});
}
} else {
// 本地视频
playLocalVideo();
}
}
@Override
public void noPermission(List<String> deniedPerms, List<String> grantedPerms, Boolean hasPermanentlyDenied) {
if (hasPermanentlyDenied) {
alertAppSetPermission("前往设置开启权限");
}
}
});
}
@Override
protected void onStop() {
super.onStop();
mVideoView.pause();
}
// 播放本地视频
private void playLocalVideo() {
// 获取屏幕宽度
DisplayMetrics dm = getResources().getDisplayMetrics();
// 获取视频宽高
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(mVideoPath);
float mediaWidth = dm.widthPixels;
float mediaHeight = dm.heightPixels;
try {
int rotation = Integer.parseInt(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION));
if (rotation == 90 || rotation == 270) {
mediaWidth = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
mediaHeight = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
} else {
mediaWidth = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
mediaHeight = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
}
} catch (NullPointerException e) {
Toast.makeText(getApplicationContext(), "视频播放错误,请重试", Toast.LENGTH_SHORT).show();
File file = new File(mVideoPath);
if (file.exists() && file.isFile()) {
file.delete();
}
finish();
}
// 根据比例占全屏
int width = 0;
int height = 0;
if (mediaWidth / mediaHeight > dm.widthPixels / dm.heightPixels) {
width = dm.widthPixels;
height = (int) (mediaHeight / (mediaWidth / dm.widthPixels));
} else {
height = dm.heightPixels;
width = (int) (mediaWidth / (mediaHeight / dm.heightPixels));
}
ViewGroup.LayoutParams layoutParams = mVideoView.getLayoutParams();
layoutParams.width = width;
layoutParams.height = height;
mVideoView.setLayoutParams(layoutParams);
// 视频路径
mVideoView.setVideoPath(mVideoPath);
// 点击退出
mVideoView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_UP:
finish();
break;
}
return true;
}
});
// 循环播放
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mVideoView.seekTo(0);
mVideoView.start();
}
});
mVideoView.setVisibility(View.VISIBLE);
mVideoView.start();
}
/**
* 打开视频
* @param context
* @param videoPath
* @return
*/
public static Intent createIntent(Context context, String videoPath) {
Intent intent = new Intent(context, RecoderPlayerActivity.clreplaced);
intent.putExtra(INTENT_VIDEO_PATH, videoPath);
return intent;
}
}
17
Source : TimelineVideoActivity.java
with GNU General Public License v3.0
from swentel
with GNU General Public License v3.0
from swentel
public clreplaced TimelineVideoActivity extends AppCompatActivity {
VideoView videoPlayer;
TextView noVideo;
MediaController mediaController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timeline_video);
noVideo = findViewById(R.id.timeline_video_not_video_found);
videoPlayer = findViewById(R.id.timeline_video);
Bundle extras = getIntent().getExtras();
if (extras != null) {
final String videoUrl = extras.getString("video");
if (videoUrl != null) {
if (videoUrl.contains("youtube.com")) {
hideVideoPlayer(false);
TextView youtubeVideo = findViewById(R.id.timeline_video_youtube);
youtubeVideo.setVisibility(View.VISIBLE);
youtubeVideo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(videoUrl));
startActivity(i);
}
});
} else {
videoPlayer.setVideoPath(videoUrl);
videoPlayer.canPause();
mediaController = new MediaController(this);
mediaController.setAnchorView(videoPlayer);
videoPlayer.setMediaController(mediaController);
videoPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaController.show();
if (Preferences.getPreference(TimelineVideoActivity.this, "pref_key_video_autoplay", false)) {
videoPlayer.start();
}
}
});
}
} else {
hideVideoPlayer(true);
}
} else {
hideVideoPlayer(true);
}
}
public void hideVideoPlayer(boolean showVideoNotFound) {
videoPlayer.setVisibility(View.GONE);
if (showVideoNotFound) {
noVideo.setVisibility(View.VISIBLE);
}
}
@Override
public void onBackPressed() {
if (videoPlayer != null) {
videoPlayer.stopPlayback();
}
super.onBackPressed();
}
@Override
public void onDestroy() {
if (videoPlayer != null) {
videoPlayer.stopPlayback();
}
super.onDestroy();
}
}
17
Source : VideoCameraActivity.java
with Apache License 2.0
from retomeier
with Apache License 2.0
from retomeier
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RECORD_VIDEO) {
VideoView videoView = findViewById(R.id.videoView);
videoView.setVideoURI(data.getData());
videoView.start();
}
}
17
Source : NineGridItemDetailActivity.java
with MIT License
from littlecurl
with MIT License
from littlecurl
/**
* 计算图片/视频的宽高
*/
private void computeMediaViewWidthAndHeight(View view) {
if (view instanceof PhotoView) {
PhotoView photoView = (PhotoView) view;
// 获取真实大小
Drawable drawable = photoView.getDrawable();
int intrinsicHeight = drawable.getIntrinsicHeight();
int intrinsicWidth = drawable.getIntrinsicWidth();
// 计算出与屏幕的比例,用于比较以宽的比例为准还是高的比例为准,因为很多时候不是高度没充满,就是宽度没充满
float h = screenHeight * 1.0f / intrinsicHeight;
float w = screenWidth * 1.0f / intrinsicWidth;
if (h > w)
h = w;
else
w = h;
// 得出当宽高至少有一个充满的时候图片对应的宽高
mediaItemViewRealHeight = (int) (intrinsicHeight * h);
mediaItemViewRealWidth = (int) (intrinsicWidth * w);
} else if (view instanceof VideoView) {
VideoView videoView = (VideoView) view;
int intrinsicHeight = videoView.getHeight();
int intrinsicWidth = videoView.getHeight();
// 计算出与屏幕的比例,用于比较以宽的比例为准还是高的比例为准,因为很多时候不是高度没充满,就是宽度没充满
float h = screenHeight * 1.0f / intrinsicHeight;
float w = screenWidth * 1.0f / intrinsicWidth;
if (h > w)
h = w;
else
w = h;
// 得出当宽高至少有一个充满的时候图片对应的宽高
mediaItemViewRealHeight = (int) (intrinsicHeight * h);
mediaItemViewRealWidth = (int) (intrinsicWidth * w);
}
}
17
Source : TrimContainer.java
with Apache License 2.0
from JessYanCoding
with Apache License 2.0
from JessYanCoding
private void changeRange(VideoView videoView, VideoPauseListener videoPauseListener, boolean isPreviewStart) {
videoPauseListener.onChange();
mIsPreviewStart = isPreviewStart;
if (isPreviewStart) {
videoView.seekTo((int) getStartTime());
} else {
videoView.seekTo((int) getEndTime());
}
if (videoView.isPlaying()) {
videoPauseListener.onVideoPause();
}
isRangeChange = true;
mIndicatorPosition = 0;
}
17
Source : PageTrim.java
with Apache License 2.0
from JessYanCoding
with Apache License 2.0
from JessYanCoding
/**
* ================================================
* Created by JessYan on 2020/4/15 12:02
* <a href="mailto:[email protected]">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* ================================================
*/
public clreplaced PageTrim implements Page {
private PictureSelectionConfig mConfig;
private LocalMedia mMedia;
private VideoView mVideoView;
private boolean mIsAspectRatio;
private TrimContainer.VideoPauseListener mVideoPauseListener;
private TrimContainer mContainer;
public PageTrim(PictureSelectionConfig config, LocalMedia media, VideoView videoView, boolean isAspectRatio, TrimContainer.VideoPauseListener videoPauseListener) {
mConfig = config;
mMedia = media;
mVideoView = videoView;
mIsAspectRatio = isAspectRatio;
mVideoPauseListener = videoPauseListener;
}
@Override
public View getView(Context context) {
mContainer = new TrimContainer(context, mConfig, mMedia, mVideoView, mVideoPauseListener);
return mContainer;
}
@Override
public void refreshData(Context context) {
}
@Override
public void init(int position, ViewGroup parent) {
}
@Override
public String getreplacedle(Context context) {
return context.getString(R.string.trim);
}
@Override
public Rect disallowInterceptTouchRect() {
return null;
}
public long getStartTime() {
if (mContainer != null) {
return mContainer.getStartTime();
}
return 0;
}
public void resetStartLine() {
if (mContainer != null) {
mContainer.resetStartLine();
}
}
public void trimVideo(InstagramMediaProcessActivity activity, CountDownLatch count) {
if (mContainer != null) {
// mContainer.trimVideo(activity, count);
mContainer.cropVideo(activity, mIsAspectRatio);
}
}
public void playVideo(boolean isPlay, VideoView videoView) {
if (mContainer != null) {
mContainer.playVideo(isPlay, videoView);
}
}
@Override
public void onResume() {
if (mContainer != null) {
mContainer.onResume();
}
}
@Override
public void onPause() {
if (mContainer != null) {
mContainer.onPause();
}
}
@Override
public void onDestroy() {
if (mContainer != null) {
mContainer.onDestroy();
mContainer = null;
}
}
}
17
Source : MainActivity.java
with MIT License
from HamedTaherpour
with MIT License
from HamedTaherpour
public clreplaced MainActivity extends AppCompatActivity implements View.OnClickListener {
private FloatingLayout floatingLayout;
private VideoView videoView;
private FloatingListener floatingListener = new FloatingListener() {
@Override
public void onCreateListener(View view) {
initVideoView(view);
view.findViewById(R.id.btn_close).setOnClickListener(MainActivity.this);
}
@Override
public void onCloseListener() {
videoView.stopPlayback();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_run).setOnClickListener(this);
}
private void initVideoView(View view) {
videoView = view.findViewById(R.id.video_player);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.matrix);
videoView.setVideoURI(uri);
videoView.start();
}
@Override
public void onClick(View view) {
switch(view.getId()) {
case R.id.btn_run:
if (!isNeedPermission())
showFloating();
else
requestPermission();
break;
case R.id.btn_close:
floatingLayout.destroy();
break;
}
}
private boolean isNeedPermission() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this);
}
private void requestPermission() {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 25);
}
private void showFloating() {
floatingLayout = new FloatingLayout(getApplicationContext(), R.layout.floating_layout);
floatingLayout.setFloatingListener(floatingListener);
floatingLayout.create();
}
}
17
Source : VideoPlayer.java
with Apache License 2.0
from djzhao627
with Apache License 2.0
from djzhao627
/**
* Created by djzhao on 17/04/29.
*/
public clreplaced VideoPlayer extends BaseActivity {
private VideoView videoView;
private MediaController mediaController;
private Context mContext;
private int tag;
private boolean videoStop;
private int currentPosition;
private String duration = "0";
@Override
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
tag = getIntent().getIntExtra("tag", 1);
setContentView(R.layout.activity_test_video_player);
findViewById();
initView();
}
@Override
protected void findViewById() {
this.videoView = $(R.id.player_test_vv);
}
@Override
protected void initView() {
mContext = this;
uiFlusHandler = new MyDialogHandler(mContext, "数据同步中...");
loadVideo();
}
private void loadVideo() {
// String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/movie.mp4";
String uri = "android.resource://" + getPackageName() + "/";
switch(tag) {
case 1:
duration = "8";
uri += R.raw.base;
break;
case 2:
duration = "9";
uri += R.raw.enhance;
break;
case 3:
duration = "11";
uri += R.raw.acme;
break;
}
// 本地视频
// videoView.setVideoPath(path);
// 网络视频
// videoView.setVideoURI(Uri.parse("http://www.runoob.com/try/demo_source/movie.mp4"));
videoView.setVideoURI(Uri.parse(uri));
mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
mediaController.setMediaPlayer(videoView);
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoStop = true;
saveTrainRecord();
}
});
videoView.start();
}
private void saveTrainRecord() {
uiFlusHandler.sendEmptyMessage(SHOW_LOADING_DIALOG);
String url = Constants.BASE_URL + "Train?method=addNewTrainRecord";
OkHttpUtils.post().url(url).id(1).addParams("userId", Constants.USER.getUserId() + "").addParams("duration", duration).build().execute(new MyStringCallback());
}
private void showInfo() {
String message = "";
switch(tag) {
case 1:
message = "“肌撕裂者-初级”";
break;
case 2:
message = "“肌撕裂者-中级”";
break;
case 3:
message = "“肌撕裂者-极致”";
break;
}
SystemClock.sleep(1000);
AlertDialog.Builder builder = new AlertDialog.Builder(VideoPlayer.this);
builder.setreplacedle("锻炼结束").setMessage("恭喜你," + message + "锻炼结束!").setPositiveButton("好的", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
}).create().show();
}
public clreplaced MyStringCallback extends StringCallback {
@Override
public void onResponse(String response, int id) {
uiFlusHandler.sendEmptyMessage(DISMISS_LOADING_DIALOG);
switch(id) {
case 1:
if (response.contains("error")) {
DisplayToast("锻炼记录同步失败");
}
showInfo();
break;
default:
DisplayToast("what?");
break;
}
}
@Override
public void onError(Call arg0, Exception arg1, int arg2) {
Toast.makeText(mContext, "网络链接出错!", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (!videoStop) {
videoView.pause();
currentPosition = videoView.getCurrentPosition();
AlertDialog.Builder builder = new AlertDialog.Builder(VideoPlayer.this);
builder.setreplacedle("猛男").setMessage("你确定要放弃锻炼吗?").setPositiveButton("择日再战", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
}).setNegativeButton("我怎么可能半途而废", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
videoView.seekTo(currentPosition);
videoView.start();
}
}).create().show();
}
}
return super.onKeyDown(keyCode, event);
}
}
17
Source : VideoPlayerActivity.java
with MIT License
from CommonsLab
with MIT License
from CommonsLab
public clreplaced VideoPlayerActivity extends AppCompatActivity {
private VideoView videoView;
private Contribution contribution;
private String thumbnailURL;
private String localVideoURI;
private FrameLayout loadingScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_player);
videoView = (VideoView) findViewById(R.id.videoView);
loadingScreen = (FrameLayout) findViewById(R.id.progressBarContainer);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
loadingScreen.setVisibility(View.GONE);
}
});
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
int playerLocation = -1;
if (savedInstanceState != null) {
if (localVideoURI == null) {
contribution = savedInstanceState.getParcelable("Contribution");
thumbnailURL = savedInstanceState.getString("ThumbnailURL");
} else {
localVideoURI = savedInstanceState.getString("VideoURI");
}
playerLocation = savedInstanceState.getInt("Location");
} else {
contribution = getIntent().getExtras().getParcelable("Contribution");
thumbnailURL = getIntent().getExtras().getString("ThumbnailURL");
localVideoURI = getIntent().getExtras().getString("LocalVideoURI");
}
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
if (localVideoURI == null) {
if (contribution != null) {
Uri uri = Uri.parse(contribution.getUrl());
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
if (playerLocation != -1)
videoView.seekTo(playerLocation);
videoView.start();
} else
Toast.makeText(this, R.string.an_error_accourred, Toast.LENGTH_SHORT).show();
} else {
// Playing local video
Uri uri = Uri.parse(localVideoURI);
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
if (playerLocation != -1)
videoView.seekTo(playerLocation);
videoView.start();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("Location", videoView.getCurrentPosition());
if (localVideoURI == null) {
outState.putParcelable("Contribution", contribution);
outState.putString("ThumbnailURL", thumbnailURL);
} else {
outState.putString("VideoURI", localVideoURI);
}
}
// private void configurationSetup() {
// RelativeLayout videoPlayer_container = (RelativeLayout) findViewById(R.id.videoPlayer_container);
//
// Configuration newConfig = getResources().getConfiguration();
// if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
// // set background for landscape
// } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// // Calculate ActionBar height
// TypedValue typedValue = new TypedValue();
// if (getTheme().resolveAttribute(android.R.attr.actionBarSize, typedValue, true)) {
// int actionBarHeight = TypedValue.complexToDimensionPixelSize(typedValue.data, getResources().getDisplayMetrics());
// videoView.setPadding(0, 0, 0, actionBarHeight);
// }
// Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
// // set background for portrait
// }
// }
}
See More Examples