2014-07-25 5 views
0

두 사람이 함께 스트리밍 및 동기화 할 수있는 개인화 된 VideoView가있는 Android 앱이 있습니다. 따라서 각 사람의 일시 중지/재생 동작으로 상대방 플레이어가 일시 중지/재생 2 개가됩니다.액션을 감지하는 방법은 Alndroid에서 MediaController를 클릭 하시겠습니까?

그래서 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가 눌려져 있습니까?

답변

-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

에 갈 수