LiveContract.java 5.8 KB
/*
 * Copyright 2016, The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.xdy.home.vp;

import android.content.Context;
import android.support.annotation.StringRes;
import android.view.SurfaceView;

import com.xdy.commonlibrary.mvp.BaseView;
import com.xdy.commonlibrary.mvp.IModel;
import com.xdy.home.entity.ChatMsgEntity;
import com.xdy.home.entity.UpdateDoc;
import com.xdy.home.entity.VideoEntity;
import com.xdy.home.entity.WhiteboardUpdateEntity;
import com.xdy.home.model.DefaultPresenterCallBack;

/**
 * @author jianghongbo
 * @version 1.0
 * @file RefundContract.java
 * @brief 直播契约类
 * @date 2017/3/24
 * Copyright (c) 2017, 学点云
 * All rights reserved.
 */
public interface LiveContract {


    /**
     *
     */
    interface LiveView extends BaseView {

        /**
         * 退出
         */
        void quit();

        /**
         * 登陆界面
         * @param show             是否显示
         * @param passwordRequired
         */
        void renderLogin(boolean show, boolean passwordRequired);

        /**
         * 播放视频
         * @param rtmpUrl
         */
        void playVideo(VideoEntity rtmpUrl);

        /**
         * 停止播放视频
         */
        void stopVideo();

        /**
         * 获取相机和音频权限
         */
        void requestCameraAndAudio();

        Context getContext();

        /**
         * 停止音频
         */
        void stopAudio();

        /**
         * 播放音频
         * @param rtmpUrl
         */
        void playAudio(VideoEntity rtmpUrl);

        /**
         * 是否显示操作按钮
         * @param b
         */
        void showOperation(boolean b);

        /**
         * 刷新按钮
         */
        void updatePausePlay();

        /**
         * 回放时音视频需要seek的长度
         * @param keyFrameSeek
         */
        void seek(int keyFrameSeek);

        void pauseOrStartEverything();

        /**
         * 显示课堂名称
         * @param className
         */
        void renderClassName(String className);

        void hideInitPic();

        /**
         * 获取显示的界面
         * @return
         */
        SurfaceView getSurfaceView();

        /**
         * 展示错误界面
         * @param reson
         */
        void showErrorDialog(int reson);

        /**
         * 展示错误界面
         * @param reson
         */
        void showErrorDialog(String reson);

        /**
         * 提示框
         * @param alertStr
         */
        void showAlertDialog(@StringRes int alertStr);

        /**
         * 重置SEEKBAR
         */
        void resetSeekBar();

        /**
         * 获取界面状态
         */
        boolean getVisible();
    }

    interface ChatView extends BaseView {

        void renderChatMsg(ChatMsgEntity entity);

        void clearChatHistory();
    }

    interface DocView extends BaseView {

        void renderDocAddress(UpdateDoc updateDoc, String url);

        void renderDeleteDocId(String itemIdx);

        //返回的更新标注
        void renderUpdateAnnotation(WhiteboardUpdateEntity entity);

        /**
         * 清除文档界面
         */
        void clear();
    }

    interface Model extends IModel {
        /**
         * 加入课堂
         * @param userName
         * @param password
         * @param hasCamera
         * @param hasMicrophone
         */
        void joinClass(String userName, String password, boolean hasCamera, boolean hasMicrophone);

        /**
         * 初始化课堂
         * @param replay   是否是录制回放
         * @param classId
         * @param portal
         * @param userRole
         * @param userId
         */
        void init(boolean replay, long classId, String portal, String userRole, String userId);

        //异步发送消息
        void sendChatMsg(String msg, int num);

        /**
         * 离开课堂
         */
        void leaveClass();

        /**
         * 获取课堂状态
         * @param defaultPresenterCallBack
         */
        void getClassStatus(DefaultPresenterCallBack<String> defaultPresenterCallBack);

        /**
         * 获取推流地址
         * @param defaultPresenterCallBack
         */
        void getVideoPublishPath(DefaultPresenterCallBack<String> defaultPresenterCallBack);

        /**
         * 打开视频 推流成功
         * @param publishUrl
         */
        void publishVideo(String publishUrl);

        /**
         * 获取文档地址  返回的是图片
         * @param defaultPresenterCallBack
         */
        void getDocAddress(String relativeUrl, String type, String pageNum, DefaultPresenterCallBack<String> defaultPresenterCallBack);

        /**
         * 停止回放
         */
        void stopRecordPlayback();

        /**
         * 暂停回放
         */
        void pauseRecordPlayback();

        /**
         * 开始回放
         */
        void startRecordPlayback();

        /**
         * 初始化回放
         */
        void initRecordPlayback(long classId, String portal, String userRole, String userId);

        /**
         * 更改回放时间点
         */
        void seekRecordPlayback(long time);
    }


    public interface OnPushListener {
        void pushListener(String messageId, String push);
    }
}