【每日一点】android VideoView

安卓开发练习册
2015-10-25


VideoView:用于播放一段视频媒体,它继承了SurfaceView,位于”android.widget.VideoView”,是一个视频控件。

MediaController
  虽然VideoView为我们提供了方便的API用于播放、暂停、停止等操作,但是还是需要我们编码完成,但是如果使用了MediaController的话,那么这些操作都可以省去。
  MediaController可以用于配合VideoView播放一段视频,它为VideoView提供一个悬浮的操作栏,在操作栏中可以对VideoView播放的视频进行控制,默认情况下,会悬浮显示三秒。它通过MediaController.setMediaPlayer()方法进行指定需要控制的VideoView,但是仅仅这样是不够的,MediaController的控制需要类似于双向控制,MediaController指定控制的VideoView,VideoView还需要指定那个MediaController来控制它,这需要使用VideoView.setMediaController()方法。


VideoView常用的方法:

  • int getCurrentPosition():获取当前播放的位置。
  • int getDuration():获取当前播放视频的总长度。
  • isPlaying():当前VideoView是否在播放视频。
  • void pause():暂停
  • void seekTo(int msec):从第几毫秒开始播放。
  • void resume():重新播放。
  • void setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源。
  • void setVideoURI(Uri uri):以Uri的方式设置VideoView播放的视频源,可以是网络Uri或本地Uri。
  • void start():开始播放。
  • void stopPlayback():停止播放。
  • setMediaController(MediaController controller):设置MediaController控制器。
  • setOnCompletionListener(MediaPlayer.onCompletionListener l):监听播放完成的事件。
  • setOnErrorListener(MediaPlayer.OnErrorListener l):监听播放发生错误时候的事件。
  • setOnPreparedListener(MediaPlayer.OnPreparedListener l)::监听视频装载完成的事件。

MediaController的一些常用方法

  • boolean isShowing():当前悬浮控制栏是否显示。
  • void setMediaPlayer(MediaController.MediaPlayerControl
    player):设置控制的组件。
  • void setPrevNextListeners(View.OnClickListener
    next,View.OnClickListener prev):设置上一个视频、下一个视频的切换事件。默认情况下,如果不通过setPrevNextListeners()设置切换视频的监听器,MediaController是不会显示这两个按钮的。

用VideoView写的视频播放器。但是总是播放不了。。。待解决

package com.example.video;

import java.io.File;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.drm.DrmErrorEvent;
import android.drm.DrmManagerClient;
import android.drm.DrmManagerClient.OnErrorListener;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.widget.VideoView;

public class MainActivity extends Activity implements MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener {
    public static final String TAG = "VideoPlayer";
    private VideoView mVideoView;
    // String
    // uriString="http://Media.zhbaby.org/BXLS/NewBaby/%E5%BC%80%E7%AF%87%E4%BB%8B%E7%BB%8D.mp4";
    // private Uri mUri=Uri.parse(uriString);
    // private int mPositionWhenPaused = -1;
    private File file = new File(Environment.getExternalStorageDirectory(), "/storage/sdcard0/Movies/111.MP4");
    private android.widget.MediaController mMediaController;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set the screen to landscape.
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        VideoView mVideoView = (VideoView) findViewById(R.id.vv_videoView);

        mVideoView.setOnErrorListener(new android.media.MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                // TODO Auto-generated method stub
                return true;
            }
        });
        mVideoView = (VideoView) findViewById(R.id.vv_videoView);

        mMediaController = new android.widget.MediaController(this);
        mMediaController.setMediaPlayer(mVideoView);
        mVideoView.setMediaController(mMediaController);
        mVideoView.setVideoPath(file.getPath());
        // mVideoView.setVideoURI(mUri);
        mVideoView.start();
        mVideoView.requestFocus();

    }



    @Override
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // TODO Auto-generated method stub
        return false;
    }
}

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值