2014-07-25 38 views
0

我有一個個性化的VideoView的Android應用程序,它允許兩個人流和同步在一起。所以每個人的暫停/播放動作都會讓對方的播放器暫停/播放兩個動作。如何檢測操作點擊Alderroid中的MediaController?

所以我需要區分開始()/暫停()函數是從用戶觸摸還是從同步。 所以我想設置一個布爾值,當用戶觸摸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被按下?

回答

-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