【问题标题】:Adding additional methods to MediaController buttons向 MediaController 按钮添加其他方法
【发布时间】:2012-07-19 21:04:28
【问题描述】:

我有一个播放视频的 VideoView,我打电话给

videoPlayer.setMediaController(new MediaController(this));

显示媒体控制器按钮(播放、暂停、前进、后退)。 问题是当我单击MediaController 的播放或暂停按钮时如何添加其他方法?

这是我的课:

public class VideoPlayer extends Activity implements OnCompletionListener {
    private String filename;

    private VideoView videoPlayer;
    private MediaPlayer mediaplayer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.video_player);

        System.gc();
        Intent i = getIntent();
        Bundle extras = i.getExtras();
        filename = extras.getString("video_url");

        System.out.println(filename);

        videoPlayer = (VideoView) findViewById(R.id.videoPlayer);
        videoPlayer.setOnCompletionListener(this);
        videoPlayer.setKeepScreenOn(true);
        videoPlayer.setVideoPath(filename);
        videoPlayer.setMediaController(new MediaController(this));
        videoPlayer.requestFocus();
        videoPlayer.start();

        mediaplayer = new MediaPlayer();
        mediaplayer = MediaPlayer.create(
                this,
                Uri.parse("android.resource://" + getPackageName() + "/"
                        + R.raw.alo));
        mediaplayer.start();

    }

    /** This callback will be invoked when the file is finished playing */
    @Override
    public void onCompletion(MediaPlayer mp) {
        // Statements to be executed when the video finishes.
        this.finish();
    }

    /** Use screen touches to toggle the video between playing and paused. */
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            if (videoPlayer.isPlaying()) {
                videoPlayer.pause();
                mediaplayer.pause();
            } else {
                videoPlayer.start();
                mediaplayer.start();
            }
            return true;
        } else {
            return false;
        }
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }   
}

【问题讨论】:

    标签: android


    【解决方案1】:

    我不确定您要达到的目标。 您可以使用 MediaController 扩展一个类并实现自己的一些方法。基本 OO 原则。

    private class MyMediaController extends MediaController {
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            // Your logic here
            return super.onTouchEvent(event);
        }
    }
    

    【讨论】:

    • 如何调用播放/暂停按钮而不是只播放或暂停视频?
    • 您覆盖了实现其他操作的方法。
    • 是的,怎么做?有什么想法吗?
    • 你要覆盖什么方法?
    • 我已经说过,点击媒体控制器的播放/暂停按钮时的触摸事件
    猜你喜欢
    • 2018-06-04
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2018-03-03
    • 2019-06-15
    • 1970-01-01
    相关资源
    最近更新 更多