我设置了一个播放内部存储视频的应用。您可以从列表视图中选择视频,但我想从URL而不是内部源将视频添加到列表视图。现在的代码如下所示:
private void fillVideosList(){
videosList.clear();
addVideosFrom(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)));
addVideosFrom(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)));
addVideosFrom(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)));
另外一件事。
退出视频后,我无法返回上一个活动。在退出视频并按“后退”按钮后,它不会带我上一次活动,而是带我再次进入视频。
视频控制器的代码如下:
public VideoController(Context context){
super(context);
this.context = context;
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)this.getLayoutParams();
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 50f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);
params.bottomMargin = pixels;
//params.rightMargin = pixels;
this.setLayoutParams(params);
}
@Override
public void setAnchorView(View view){
super.setAnchorView(view);
ImageButton exitButton = new ImageButton(context);
exitButton.setImageDrawable(getResources().getDrawable((R.drawable.exit)));
exitButton.setBackgroundColor(Color.BLACK);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.RIGHT;
addView(exitButton, params);
exitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, VideoPlayer.class);
intent.putExtra((VIDEO_ACTIVITY_INTENT), "showContinueWatching");
context.startActivity(intent);
原因是MediaController在以下代码中消耗了KEYCODE_BACK事件,如果您想将KEYCODE_BACK事件正常发送到Activity,您要做的就是重写MediaController的dispatchKeyEvent方法,按以下方式处理:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return false;
}
return super.dispatchKeyEvent(event);
}