WebWalker

阅读-思考-实践-总结

Android 视频播放状态链控制简单实现

需求场景:连续进行视频播放2个小时,无任何按键响应
1、提示用户已观看多长时间,是否需要休息,用户可点击休息一会或继续观看,
2、如果用户没有任何反应一段时间以后自动退出应用
3、如果用户点击休息一会,间隔一段时间后自动进行播放

4、如果用户点击继续观看,则重置播放状态,重新计时


针对以上的效果做了简单的实现,如下:



主要代码:

public class ActionManager {

	public enum State {
		Default, Playing, hasPromptRest, Rest
	}

	private static int stateTime = 0; // 某一状态的持续时间
	private static int playPeriod = 2 * 3600; // 多长时间后提示休息
	private static int hasPromptPeriod = 2 * 60; // 提示休息后,多长时间内没反应
	private static int restPeriod = 10 * 60; // 再次提示休息的间隔
	private static State ActionState = State.Default;
	private static boolean hasPause = false;

	private static Context context;

	public static void setContext(Context c) {
		context = c;
	}

	public static Context getContext() {
		return context;
	}

	public static void setTest() {
		playPeriod = 30;
		hasPromptPeriod = 30;
		restPeriod = 30;
	}

	private static int getActionTime() {
		return stateTime;
	}

	public static void setActionTime(int actionTime) {
		if (getActionState() == State.Default) {
			resetActionTime();
			return;
		}
		if (hasPause)
			return;
		stateTime += actionTime;
	}

	private static State getActionState() {
		return ActionState;
	}

	public static void setState(State actionState) {
		ActionState = actionState;
	}

	public static void setActionState(State actionState) {
		resetActionTime();
		ActionState = actionState;
	}

	public static void setHasPause(boolean p) {
		hasPause = p;
	}

	private static void resetActionTime() {
		stateTime = 0;
	}

	private static IAction getAction(Object data) {
		IAction action = new NullAction();
		int actionTime = getActionTime();
		switch (getActionState()) {
			case Playing :
				if (actionTime >= playPeriod)
					action = new PlayingAction();
				break;
			case hasPromptRest :
				if (actionTime >= hasPromptPeriod)
					action = new HasPromptRestAction();
				break;
			case Rest :
				if (actionTime >= restPeriod)
					action = new RestAction();
				break;
			default :
				break;
		}
		return action;
	}

	/**
	 * execute user monitor action
	 */
	public static void doAction(Object data, int timeInterval) {
		setActionTime(timeInterval);
		IAction action = getAction(data);
		action.doAction(data);
	}
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/webwalker/article/details/30084455
文章标签: Android 视频 播放
个人分类: Android
想对作者说点什么? 我来说一句

简单的实现AndroidMP3播放器

2014年12月27日 8.93MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭