GetActiveInfoUtil.java 4.3 KB
package com.cnlive.demo.video.util;

import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;

import com.cnlive.demo.video.model.LiveInfo;
import com.cnlive.libs.util.Config;
import com.cnlive.libs.util.HttpUtils;
import com.cnlive.libs.util.auth.AuthUtil;
import com.cnlive.libs.util.data.network.Callback;
import com.cnlive.libs.util.data.network.DataGenericsCallback;
import com.cnlive.libs.util.data.okhttp3.Call;
import com.cnlive.libs.util.data.okhttpUtil.callback.GenericsCallback;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Lynn on 6/7/2017.
 * 此类为获取活动状态的demo,网络请求可根据自己的实际情况修改
 */

public class GetActiveInfoUtil {
    private static final String TAG = "GetActiveInfoUtil";
    private static final String BASE_URL = "https://api.cnlive.com/open/api2";
    private static final String URL_LIVE_INFO_BASE = BASE_URL + "/live_epg/getLiveActivityPlayInfo4App";
    private static DataGenericsCallback<LiveInfo> mLiveActivityCallback;

    public static void getActiveInfo(final Context context, String activityId) {
        loadLiveInfo(activityId, new Callback() {
            @Override
            public void onState(int i, String s, Object o) {
                LiveInfo liveInfo = (LiveInfo) o;
                if (i == 0) {
                    //获取活动新消息成功
                    if (liveInfo.getData() != null) {
                        switch (liveInfo.getData().getActivityStatus()) {
                            case -2:
                                Toast.makeText(context, -2 + "活动异常", Toast.LENGTH_SHORT).show();
                                break;
                            case 0:
                                Toast.makeText(context, 0 + "未开始", Toast.LENGTH_SHORT).show();
                                break;
                            case 1:
                                Toast.makeText(context, 1 + "已开始", Toast.LENGTH_SHORT).show();
                                break;
                            case 3:
                                Toast.makeText(context, 3 + "已结束", Toast.LENGTH_SHORT).show();
                                break;
                            case 4:
                                Toast.makeText(context, 4 + "已下线", Toast.LENGTH_SHORT).show();
                                break;
                        }
                    }
                }
            }
        });
    }

    private static void loadLiveInfo(String activityId, Callback callback) {
        if (mLiveActivityCallback != null) {
            mLiveActivityCallback.cancel();
            mLiveActivityCallback = null;
        }
        if (TextUtils.isEmpty(activityId)) {

            callback.onState(-1, "activityId错误,获取活动信息失败", null);
            return;
        }

        mLiveActivityCallback = new DataGenericsCallback<LiveInfo>(callback) {
            @Override
            public void onError(Call call, Exception e) {
                if (callback == null) return;

                if (e != null) Log.e("CNLiveVideo", "video error", e);
                callback.onState(-2, "获取活动信息失败", null);
            }


            @Override
            public void onResponse(LiveInfo response, Exception e) {
                if (callback == null) return;
                if (response != null && "0".equals(response.getErrorCode())) {
                    callback.onState(0, "获取活动信息成功", response);
                } else if (response != null && !TextUtils.isEmpty(response.getErrorCode())) {
                    //请求失败 服务器错误
                    Log.e("DataLoad", "  " + response.getErrorCode());
                    callback.onState(-3, "请求服务器失败 " + response.getErrorMessage(), response);
                } else {
                    onError(null, e);
                }

            }
        };
        loadLiveInfo(activityId, mLiveActivityCallback);
    }

    private static void loadLiveInfo(String activityId, GenericsCallback<LiveInfo> callBack) {
        String appId = Config.getAppId();
        Map<String, String> map = new HashMap<>();
        map.put("appId", appId);
        map.put("activityId", activityId);
        HttpUtils.doGetAsyn(URL_LIVE_INFO_BASE, map, callBack);
    }
}