如何检测动作点击Android中的MediaController?

时间:2014-07-25 18:40:26

标签: android ontouchevent mediacontroller

我有一个带有个性化VideoView的Android应用程序,允许两个人一起流式传输和同步。因此,每个人的暂停/播放动作都会让其他人暂停/播放两个。

所以我需要区分start()/ pause()函数是来自用户触摸还是来自同步。 所以我想在用户触摸MediaController上的播放/暂停按钮时设置一个布尔值,将设置一个布尔值,但我不知道如何检测MediaContoller上的播放按钮是否被触发。

这是我的VideoView类代码:

public class MyVideoView extends VideoView {

private VideoActionListener listener;


public MyVideoView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public MyVideoView(Context context, AttributeSet attrs){
    super(context, attrs);
}

public MyVideoView(Context context, AttributeSet attrs, int defStyle){
    super(context, attrs, defStyle);
}

public void setOnVideoActionListener(VideoActionListener l){
    listener = l;
}

@Override
public void start(){
    if(listener != null){
        listener.onPlay(this.getCurrentPosition());
        super.start();
    }else{
        super.start();
    }

}

@Override
public void pause(){
    super.pause();
    if(listener != null){   
        listener.onPause(this.getCurrentPosition());
    }
}

@Override
public void seekTo(int msec){       
    if(listener!= null){
        listener.onSeek(msec);
        super.seekTo(msec);
    }else{
        super.seekTo(msec);
    }
}


interface VideoActionListener{
    void onPlay(int msec);
    void onPause(int msec);
    void onSeek(int msec);
}


}

在这里,在我的主要活动中,我使用了VideoView和MediaController:

MyVideoView video;
MyController controller = new MyController(mContext);
video = (MyVideoView)rootView.findViewById(R.id.video);
video.setBackgroundColor(Color.TRANSPARENT);
video.setMediaController(controller);

private class MyController extends MediaController {

    public MyController(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public boolean onTouchEvent(MotionEvent event) {
        Toast.makeText(context, "Controller touch event activated",
                Toast.LENGTH_SHORT).show();
        return true;
        // return super.onTouchEvent(event);

    }

    public boolean onTrackballEvent(MotionEvent event) {
        Toast.makeText(context, "Trackball event activated",
                Toast.LENGTH_SHORT).show();
        return super.onTouchEvent(event);
    }

}  

那么,我应该如何检测何时按下MediaController中的播放按钮?

1 个答案:

答案 0 :(得分:-2)

我想你几乎成功了。 只需调用setOnVideoActionListener。

MyController controller = new MyController(mContext);
video = (MyVideoView)rootView.findViewById(R.id.video);
video.setBackgroundColor(Color.TRANSPARENT);
video.setMediaController(controller);
video.setOnVideoActionListener (new VideoActionListener() {
...
}
);

或者您可以转到here