如何检测 VideoView 何时暂停?
How do I detect when a VideoView is paused?
我需要检测 VideoView 何时暂停,因此我可以在屏幕上隐藏一些 UI 元素。 VideoView 没有通知您暂停事件的机制。我该怎么做?
我还没有看到很好的答案(这么多人使用线程)。这是我的:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;
public class PlayStateBroadcastingVideoView extends VideoView{
public interface PlayPauseListener {
void onPlay();
void onPause();
}
private PlayPauseListener mListener;
public PlayStateBroadcastingVideoView(Context context) {
super(context);
}
public PlayStateBroadcastingVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PlayStateBroadcastingVideoView(Context context, AttributeSet attrs, int theme) {
super(context, attrs, theme);
}
@Override
public void pause() {
super.pause();
if(mListener != null) {
mListener.onPause();
}
}
@Override
public void start() {
super.start();
if(mListener != null) {
mListener.onPlay();
}
}
public void setPlayPauseListener(PlayPauseListener listener) {
mListener = listener;
}
}
之所以可行,是因为深入研究代码(至少从 5.0 开始),唯一将其置于暂停状态的函数是暂停,而将其置于播放状态的唯一函数是启动。所以我们简单地挂钩这些以通过侦听器通知我们。然后在您的布局中使用此 class 代替 VideoView.
我需要检测 VideoView 何时暂停,因此我可以在屏幕上隐藏一些 UI 元素。 VideoView 没有通知您暂停事件的机制。我该怎么做?
我还没有看到很好的答案(这么多人使用线程)。这是我的:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;
public class PlayStateBroadcastingVideoView extends VideoView{
public interface PlayPauseListener {
void onPlay();
void onPause();
}
private PlayPauseListener mListener;
public PlayStateBroadcastingVideoView(Context context) {
super(context);
}
public PlayStateBroadcastingVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PlayStateBroadcastingVideoView(Context context, AttributeSet attrs, int theme) {
super(context, attrs, theme);
}
@Override
public void pause() {
super.pause();
if(mListener != null) {
mListener.onPause();
}
}
@Override
public void start() {
super.start();
if(mListener != null) {
mListener.onPlay();
}
}
public void setPlayPauseListener(PlayPauseListener listener) {
mListener = listener;
}
}
之所以可行,是因为深入研究代码(至少从 5.0 开始),唯一将其置于暂停状态的函数是暂停,而将其置于播放状态的唯一函数是启动。所以我们简单地挂钩这些以通过侦听器通知我们。然后在您的布局中使用此 class 代替 VideoView.