Config.java 4.12 KB
package com.sunvote.udptransfer;

import android.os.Environment;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Created by Elvis on 2017/8/8.
 * Email:Eluis@psunsky.com
 * Description: 配置类
 */

public class Config {

    /**
     *
     4001 PC 收数据
     4002 Android 收数据
     */
    public String serverIP = "" ;//192.168.0.181
    public int serverUDPPort = 40001 ;
    public int localUDPPort = 40002 ;
    public String VERSION_CODE = "1.0.0.0";

    private boolean canChangerServer = false;

    public void setCanChangerServer(boolean canChangerServer) {
        this.canChangerServer = canChangerServer;
    }

    public boolean isCanChangerServer() {
        return canChangerServer;
    }


    public void saveInfo(){
        File file =new File(Environment.getExternalStorageDirectory().getPath() + "/sunvote/serverip.txt");
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(file);
            fileWriter.write(serverIP);
            fileWriter.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(fileWriter != null){
                try {
                    fileWriter.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * 当基站经过CHECK_ON_LINE_TIME时间后,变为离线模式
     * 在此设置
     */
    public long CHECK_ON_LINE_TIME = 10 * 1000 ;

    /**
     * 重复发送消息间隔时间
     */
    public long REPEAT_INVERVAL_TIME = 2 * 1000 ;

    private Config(){}

    private static Config instance = new Config();

    public static Config getInstance(){return instance;}

    public int keepAliveInterval = 0;
    public int networkConnectionTimeout = 0;

    public  void setSenseMode(SenseMode mode)
    {
        switch(mode)
        {
            case MODE_3S:
            {
                keepAliveInterval = 3000;// 3s
                networkConnectionTimeout = 3000 * 3 + 1000;// 10s
                break;
            }
            case MODE_10S:
                keepAliveInterval = 10000;// 10s
                networkConnectionTimeout = 10000 * 2 + 1000;// 21s
                break;
            case MODE_30S:
                keepAliveInterval = 30000;// 30s
                networkConnectionTimeout = 30000 * 2 + 1000;// 61s
                break;
            case MODE_60S:
                keepAliveInterval = 60000;// 60s
                networkConnectionTimeout = 60000 * 2 + 1000;// 121s
                break;
            case MODE_120S:
                keepAliveInterval = 120000;// 120s
                networkConnectionTimeout = 120000 * 2 + 1000;// 241s
                break;
        }
    }


    public enum SenseMode
    {
        /**
         * 此模式下:<br>
         * * KeepAlive心跳问隔为3秒;<br>
         * * 10秒后未收到服务端心跳反馈即认为连接已断开(相当于连续3 个心跳间隔后仍未收到服务端反馈)。
         */
        MODE_3S,

        /**
         * 此模式下:<br>
         * * KeepAlive心跳问隔为10秒;<br>
         * * 21秒后未收到服务端心跳反馈即认为连接已断开(相当于连续2 个心跳间隔后仍未收到服务端反馈)。
         */
        MODE_10S,

        /**
         * 此模式下:<br>
         * * KeepAlive心跳问隔为30秒;<br>
         * * 61秒后未收到服务端心跳反馈即认为连接已断开(相当于连续2 个心跳间隔后仍未收到服务端反馈)。
         */
        MODE_30S,

        /**
         * 此模式下:<br>
         * * KeepAlive心跳问隔为60秒;<br>
         * * 121秒后未收到服务端心跳反馈即认为连接已断开(相当于连续2 个心跳间隔后仍未收到服务端反馈)。
         */
        MODE_60S,

        /**
         * 此模式下:<br>
         * * KeepAlive心跳问隔为120秒;<br>
         * * 241秒后未收到服务端心跳反馈即认为连接已断开(相当于连续2 个心跳间隔后仍未收到服务端反馈)。
         */
        MODE_120S
    }

}