我有一个带有个性化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中的播放按钮?
答案 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